Fluxo OIDC — Authorization Code + PKCE

O Auth Platform implementa o fluxo Authorization Code com PKCE (RFC 7636). PKCE é obrigatório — o Auth Platform rejeita requests sem code_challenge.

Diagrama completo

1. Seu app gera:
   code_verifier  = random(43-128 chars)
   code_challenge = base64url(sha256(code_verifier))

2. Redirect para o Auth Platform:
   GET /auth
     ?client_id=SEU_CLIENT_ID
     &response_type=code
     &redirect_uri=https://app.com/callback
     &scope=openid email profile offline_access
     &code_challenge=<challenge>
     &code_challenge_method=S256
     &state=<random>

3. Usuário autentica (tela de login do Auth Platform)

4. Auth Platform redireciona de volta:
   https://app.com/callback?code=AUTHORIZATION_CODE&state=<random>

5. Seu app troca o code por tokens:
   POST /token
     grant_type=authorization_code
     &code=AUTHORIZATION_CODE
     &redirect_uri=https://app.com/callback
     &client_id=SEU_CLIENT_ID
     &code_verifier=<verifier>

6. Resposta:
   {
     "access_token": "eyJ...",
     "id_token": "eyJ...",
     "refresh_token": "...",
     "token_type": "Bearer",
     "expires_in": 600
   }

Endpoints OIDC

EndpointURLDescrição
Discovery/.well-known/openid-configurationMetadados do servidor
Authorization/authInicia o fluxo de login
Token/tokenTroca code por tokens / renova via refresh
JWKS/jwksChaves públicas para validar JWTs
UserInfo/meClaims do usuário autenticado
Revocation/token/revocationRevogar refresh_token
End Session/session/endLogout

Renovação automática

O oidc-client-ts configura automaticSilentRenew: true para renovar o access_token antes de expirar via iframe silencioso ou refresh_token.

// Configuração recomendada
const userManager = new UserManager({
  authority:             'https://auth.seudominio.com',
  client_id:             'SEU_CLIENT_ID',
  redirect_uri:          `${origin}/callback`,
  scope:                 'openid email profile offline_access',
  response_type:         'code',
  automaticSilentRenew:  true,     // renova antes de expirar
  includeIdTokenInSilentRenew: true,
});

// Ouvir erros de renovação
userManager.events.addSilentRenewError((error) => {
  console.error('Silent renew failed:', error);
  userManager.signinRedirect(); // redireciona para login se falhar
});

Google OAuth

Se o Auth Platform estiver configurado com GOOGLE_CLIENT_ID, a tela de login exibirá o botão "Continuar com Google". O fluxo é idêntico do ponto de vista do seu app — você apenas inicia o fluxo OIDC normalmente.

// Não precisa fazer nada diferente — o botão Google aparece
// automaticamente na tela de login do Auth Platform
await userManager.signinRedirect();

Logout

// Redireciona para o Auth Platform para encerrar a sessão
await userManager.signoutRedirect();
// → revoga o refresh_token
// → limpa a sessão do servidor
// → redireciona para post_logout_redirect_uri