3 pontos por GN⁺ 2024-02-12 | 1 comentários | Compartilhar no WhatsApp

Configuração de SSO com Keycloak: usando Docker Compose e Nginx

  • Keycloak é uma solução de gerenciamento de identidade e acesso open source, confiável e compatível com os principais protocolos de SSO.
  • A configuração com Docker Compose não é complexa, mas também não é intuitiva, então é fornecido um resumo do processo de configuração.

Conceito

  • Usa-se uma configuração padrão em que o Nginx atua como proxy reverso central para encaminhar tráfego a serviços individuais via localhost.
  • Isso é considerado uma configuração econômica, que compartilha os recursos de um único host enquanto isola ao máximo cada ambiente.

Pré-requisitos

  • São necessárias ferramentas básicas (SSH, uma VM com Linux instalado, domínio ou subdomínio).
  • Para configurar o Docker rootless, cria-se um novo usuário non-root sem senha chamado keycloak, atualizam-se os intervalos de /etc/subuid e /etc/subgid, instala-se o Docker rootless e configura-se a inicialização automática do serviço.

Configuração do Keycloak

  • Faça login com o usuário keycloak recém-criado e crie diretórios para dados persistentes e arquivos do Docker.
  • Com base na documentação oficial, escreva o arquivo docker-compose.yml e coloque as informações sensíveis e variáveis no arquivo .env.

Teste local

  • Teste a stack do Docker Compose, crie um túnel SSH reverso para a VM e confirme a tela de boas-vindas do Keycloak no navegador.

Configuração do Nginx

  • Configure o Nginx como proxy reverso do sistema e crie um novo arquivo .conf do Nginx para o serviço Keycloak.
  • Adicione um registro A no registrador do domínio para encaminhar consultas DNS ao IP da VM.

Depuração

  • Abra .tld.com, faça login no Keycloak como usuário admin e verifique os logs do Docker Compose e os logs de acesso e erro do Nginx.
  • Se necessário, verifique também o banco de dados do Keycloak.

Build personalizada com Dockerfile

  • Em vez de usar uma imagem pré-compilada do quay.io, construa sua própria imagem com um Dockerfile.
  • Reinicie o Docker Compose para fazer o build da imagem e iniciar o serviço.

Conclusão

  • O serviço Keycloak está sendo executado atrás de um proxy reverso Nginx do sistema com Docker rootless.
  • As próximas etapas incluem atualização automática dos contêineres Docker, adição de login e e-mail ao serviço Keycloak, inclusão de realms e adição de temas.

GN⁺ opina:

  • Importância da segurança: como o estado atual da web dificulta acompanhar vulnerabilidades relacionadas à segurança, é importante usar uma solução confiável como o Keycloak.
  • Arquitetura eficiente: a abordagem de compartilhar recursos em um único host enquanto isola os ambientes é econômica e fácil de administrar.
  • Possibilidade de personalização: uma build personalizada com Dockerfile oferece flexibilidade para ajustar o Keycloak às próprias necessidades.

1 comentários

 
GN⁺ 2024-02-12
Comentários no Hacker News
  • Opinião de um usuário que escolheu o Authelia:

    • O Keycloak tem muitos recursos, mas a configuração é complexa e exige serviços adicionais.
    • O Authelia não tem interface de usuário e não faz sincronização bidirecional com um servidor LDAP, mas pode ser configurado com arquivos estáticos e variáveis de ambiente, o que o torna adequado para muitos casos.
    • Se você precisa de autenticação simples e SSO, recomenda começar com o Authelia.
  • Opinião de um usuário com experiência usando JetBrains Hub e Keycloak, que acabou escolhendo o Dex:

    • O JetBrains Hub é muito fácil de configurar, mas a ausência da tag latest na imagem Docker é inconveniente.
    • O Keycloak é fácil no modo de desenvolvimento, mas difícil de configurar em um ambiente real de produção.
    • No fim, escolheu o Dex, que tem pouca documentação, mas configuração simples.
    • Combinou OAuth2 Proxy com templates do Nginx para simplificar a configuração de SSO.
    • Adicionou Cloudflare Access e WAF por segurança.
  • Opinião de um usuário que criou uma tabela comparativa de servidores OpenID Connect:

    • Ficou surpreso com o tamanho da base de código do Keycloak.
  • Opinião de um usuário sobre problemas de segurança do Keycloak:

    • Ao ver os CVEs do Keycloak, há preocupação com problemas de segurança.
  • Opinião de um usuário que compartilhou sua experiência implementando o Keycloak no AWS ECS:

    • O Keycloak passou por muitas mudanças ao longo do tempo.
    • Houve dificuldades com clustering, especialmente com descoberta via DNS e descoberta de cluster por UDP.
    • Os logins com estado não se mantinham consistentes entre os servidores, o que dificultava o balanceamento de carga.
  • Opinião de um usuário que fez uma menção positiva ao Keycloakify:

    • O Keycloakify parece ser uma excelente alternativa ao Keycloak.
  • Opinião de um usuário que comparou Authelia e Keycloak:

    • O Authelia parece atraente, mas o Keycloak oferece um conector para Angular, o que facilita começar.
  • Opinião de um usuário que compartilhou sua experiência usando o Keycloak:

    • O Keycloak tem configuração complexa e pouca documentação, mas pode ser implantado e gerenciado com facilidade usando Terraform.
  • Opinião de um usuário que já usou o Zitadel:

    • O Keycloak pode ser confuso para iniciantes, e o Zitadel é mais fácil de usar.
  • Opinião de um usuário que desabafou sobre as dificuldades de usar o Keycloak:

    • O Keycloak não fornece diretamente links de redefinição de senha e isso precisa ser tratado via API.
    • A configuração de cluster não é simples e há limitações nos realms.
    • Construir por conta própria um sistema de login seguro pode ser arriscado ou difícil.