Depurador OAuth
Privacy FirstDepure fluxos de autenticação OAuth 2.0/PKCE.
PKCE Generator
Click Generate to create a cryptographically random code_verifier and derive its SHA-256 code_challenge.
Authorization URL Builder
Security Analyzer
Describe your OAuth configuration and get security recommendations.
Security Findings
O que é PKCE e por que isso importa?
Proof Key for Code Exchange (PKCE, RFC 7636) foi originalmente projetado para apps móveis e nativos que não conseguem armazenar um client secret com segurança. Funciona fazendo o cliente gerar um code_verifier aleatório, derivar dele um code_challenge (SHA-256 + base64url) e enviar o challenge junto com a requisição de autorização. Ao trocar o código de autorização por tokens, o cliente envia o code_verifier original. O servidor de autorização verifica se ele corresponde ao challenge anterior — provando que a requisição de token veio do mesmo cliente que iniciou o fluxo.
Mesmo para clientes confidenciais (aplicações server-side com um client secret), o PKCE agora é recomendado pelo OAuth 2.1 como defesa contra ataques de interceptação de código de autorização.
Por que o fluxo Implicit está obsoleto?
O fluxo implícito (response_type=token) foi projetado como um atalho para single-page apps, retornando o access token diretamente no fragmento da URL. Isso cria problemas sérios: tokens em URLs aparecem no histórico do navegador, logs de servidor e headers de referrer, e o fluxo é vulnerável a ataques de injeção de token. O OAuth 2.0 Security Best Current Practice (RFC 9700) e o OAuth 2.1 removem explicitamente o fluxo implícito em favor do Authorization Code + PKCE, que SPAs podem usar com segurança sem um client secret.
Principais mudanças do OAuth 2.1
- PKCE obrigatório para todos os fluxos Authorization Code, incluindo clientes confidenciais.
- Fluxo Implicit removido — use Authorization Code + PKCE em vez disso.
- Resource Owner Password Credentials (ROPC) removido — o grant type
passwordestá obsoleto. - Rotação de refresh token obrigatória para clientes públicos — um novo refresh token deve ser emitido a cada uso.
- Correspondência exata de redirect URI obrigatória — sem correspondência por padrão ou wildcards.
Fluxo Authorization Code passo a passo
- Gere o par PKCE: crie um
code_verifieraleatório e calculecode_challenge = BASE64URL(SHA256(code_verifier)). - Redirecione para o endpoint de autorização: inclua
response_type=code,client_id,redirect_uri,scope,state,code_challengeecode_challenge_method=S256. - O usuário se autentica no servidor de autorização e concede o consentimento.
- Receba o código de autorização no seu
redirect_urijunto com ostateecoado — verifique se ostatecorresponde ao que você enviou. - Troque o código por tokens: faça um POST para o endpoint de token com
grant_type=authorization_code,code,redirect_uri,client_idecode_verifier. - Receba o access token (e, opcionalmente,
id_tokenerefresh_token) e use-os para chamar APIs.