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
| Endpoint | URL | Descrição |
|---|---|---|
| Discovery | /.well-known/openid-configuration | Metadados do servidor |
| Authorization | /auth | Inicia o fluxo de login |
| Token | /token | Troca code por tokens / renova via refresh |
| JWKS | /jwks | Chaves públicas para validar JWTs |
| UserInfo | /me | Claims do usuário autenticado |
| Revocation | /token/revocation | Revogar refresh_token |
| End Session | /session/end | Logout |
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