Post

Case: POC de SSO com Keycloak/OpenID Connect para debug rápido

Case: POC de SSO com Keycloak/OpenID Connect para debug rápido

Contexto

Precisávamos depurar integrações SSO/OIDC (Keycloak e outros provedores) sem acoplar testes ao monólito Rails. Debug direto no app principal era lento e arriscado; cada ajuste de redirect ou scope exigia deploy/staging.

O que foi feito

  • POC em Node.js focada só no fluxo Authorization Code + PKCE.
  • Página única que mostra tokens (ID/Access) e resposta do userinfo, útil para validar claims, audience e expiração.
  • Logout implementado conforme OIDC (id_token_hint + post_logout_redirect_uri) para garantir encerramento real da sessão no provedor.
  • Configuração via .env (ou SSO_ENV_FILE), com defaults para Keycloak; script run.sh automatiza build/run em Docker.

Fluxo (simplificado)

flowchart LR
  User --> Login[/login gera PKCE/]
  Login --> OIDC[Provedor OIDC<br/>/auth]
  OIDC -->|code + state| Authorize[/authorize troca code por token/]
  Authorize --> Tokens[Exibe ID/Access token]
  Tokens --> Userinfo[/userinfo opcional/]
  Tokens --> Logout[/logout -> OIDC logout/]

Operação e devX

  • Sobe em segundos (npm start) ou via Docker (run.sh); sem dependências além de Node.
  • Variáveis mínimas: OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_REDIRECT_URI, OIDC_ISSUER_BASE_URL, OIDC_SCOPE.
  • Tokens e sessões ficam em memória; reiniciar limpa o estado e facilita rodadas de teste.

Impacto (anonimizado)

  • Reduziu o ciclo “ajusta scope/redirect ↔ testa ↔ corrige” para minutos, sem tocar o Rails.
  • Facilitou troubleshooting de logout e PKCE (validando state, code_verifier) antes de integrar no produto.
  • Deu um checklist simples para outros times validarem clientes Keycloak/OIDC.

O que você pode reutilizar

  • POC pequena para validar OIDC antes de integrar a apps maiores.
  • Scripts de build/run em Docker com env file parametrizável.
  • Fluxo de logout correto (id_token_hint + post_logout_redirect_uri) como referência.
Esta postagem está licenciada sob CC BY 4.0 pelo autor.