Keycloak SSO com Docker Compose e Nginx
O single sign-on auto-hospedado com Keycloak provoca opiniões fortes: muitos valorizam seu rico conjunto de recursos e suporte a padrões, mas o descrevem como pesado, complexo de configurar e peculiar para operar em escala ou atrás de proxies reversos modernos. Os comentadores trocam dicas de implantação (Docker Compose, Nginx/Apache/Caddy, Terraform, exportação/importação de realms) e muitas vezes transferem a complexidade para a camada de proxy ou para serviços separados de autorização, ao mesmo tempo em que alertam sobre limites de desempenho e armadilhas operacionais como clustering e quantidade de realms. Uma ampla variedade de alternativas — Authelia, authentik, Zitadel, Dex, FusionAuth, plugins do Caddy e servidores OIDC mais leves — é comparada quanto à facilidade de configuração, consumo de recursos, suporte a MFA, abertura do código e adequação para homelab versus uso corporativo.
Keycloak: poder vs complexidade
- Amplamente visto como poderoso e rico em recursos (OIDC/SAML, realms/tenants, serviços de autorização/UMA2), mas também grande, opinativo e difícil de aprender.
- As reclamações incluem: interface/documentação confusas, APIs administrativas complicadas, exportação de configuração parcial/estranha, estado persistente que torna reconstruções complicadas e clustering difícil (descoberta multicast/UDP, sticky sessions).
- Alguns relatam bom desempenho com a imagem Quarkus “optimized” (inicialização rápida, RAM modesta); outros veem inicializações lentas e alto uso de recursos. O tamanho do container e os recursos recomendados parecem pesados para homelabs simples ou configurações pequenas.
- Realms são promovidos como mecanismo multi-tenant, mas há relatos de lentidão severa e falhas a partir de algumas centenas de realms; isso é descrito como um problema conhecido e antigo.
Proxy reverso e padrões de implantação
- Padrão comum: encerrar OIDC em um proxy reverso (Apache mod_auth_openidc, Nginx, Caddy, Traefik) e encaminhar a identidade via headers para os aplicativos, evitando a complexidade de OIDC por aplicativo.
- Alguns executam Keycloak localmente via HTTP e o expõem por túneis do Cloudflare ou proxies com auto-TLS (Caddy, Caddy-Docker-Proxy) para evitar gerenciamento manual de certificados; outros preferem Nginx no host pela maturidade e documentação.
- Keycloak pode se comportar de forma estranha atrás de proxies; em algumas configurações, foi necessária configuração extra de proxy. Divergências de DNS no desenvolvimento local (hostname do container vs localhost) são uma irritação recorrente.
Soluções alternativas de identidade/SSO
- Authelia: elogiado pela pegada muito pequena, configuração simples por arquivo/variáveis de ambiente e SSO forte na camada de proxy para homelabs; não possui uma interface completa de administração de usuários. Há preocupações sobre lançamentos pouco frequentes; os mantenedores afirmam que ele está sendo desenvolvido ativamente, com uma grande pré-versão pendente.
- Authentik: apreciado pela facilidade de configuração e boa documentação, mas criticado por um bug de redirecionamento de subdomínio e por uma implementação não padrão de client credentials; os mantenedores reconhecem isso e estão entregando correções.
- Zitadel: citado repetidamente como muito mais fácil que o Keycloak, com todos os recursos de MFA/passkey na versão open source; requer seu próprio banco de dados (Postgres).
- Outros mencionados: Dex + oauth2-proxy (IdP federado simples + forward auth), FusionAuth (código fechado, mas com plano gratuito, amigável ao Terraform), JetBrains Hub, obligator (dirigido por código, sem banco, mas ainda jovem), Teleport, lldap como LDAP leve.
Configuração, autorização e segurança
- Vários usuários movem a autorização (grupos/funções/permissões) para fora do Keycloak, indo para bancos de dados dos aplicativos ou serviços dedicados de autorização, mantendo o Keycloak apenas para identidade.
- Infraestrutura como código (por exemplo, providers do Terraform) é usada para evitar configuração manual do Keycloak e drift.
- Debate sobre postura de segurança: CVEs do Keycloak preocupam alguns; outros argumentam que o reporte transparente é melhor do que falhas desconhecidas silenciosamente. IdPs de código fechado sem CVEs são vistos como nenhuma garantia de segurança.