AZ Tools

Gerador OAuth 2.0 PKCE

Rede

PKCE (Proof Key for Code Exchange, RFC 7636) é o fluxo OAuth 2.0 moderno recomendado para TODOS os clientes públicos — SPAs, mobile e apps desktop que não podem guardar client_secret com segurança. Esta ferramenta gera um `code_verifier` criptograficamente aleatório (43-128 caracteres do alfabeto URI não reservado), deriva o `code_challenge` (SHA-256 codificado em base64url para S256, ou o próprio verifier para `plain`) e monta a URL completa com `state` para proteção CSRF. O `curl` exemplo mostra a troca de token com todos os parâmetros prontos — apenas cole o `code` do callback.

Como usar

  1. Defina o tamanho do verifier (64 é bom default; mínimo 43, máximo 128).
  2. Escolha S256 (sempre preferido) ou plain (apenas servidores legacy).
  3. Preencha `client_id`, `redirect_uri`, `scope` e endpoints OAuth.
  4. Envie o usuário para a URL de autorização. Quando voltar com `?code=...`, execute o curl com esse código para obter tokens.

Perguntas frequentes

S256 vs plain, qual usar?
Sempre S256. Plain envia o verifier como challenge — sem proteção se interceptarem a requisição. S256 envia apenas SHA-256 do verifier, então o verifier nunca aparece no passo 1. RFC 7636 diz que clientes devem rejeitar plain se S256 estiver disponível.
Por que esses caracteres no verifier?
RFC 7636 especifica o alfabeto como `[A-Z][a-z][0-9]-._~` — caracteres URI não reservados da RFC 3986. Seguro em URLs, headers e bodies sem escape.
Para que serve `state`?
String aleatória opaca que o cliente gera por requisição e valida no callback. Previne CSRF: se um atacante enganar o usuário a clicar em redirect malicioso, o `state` não vai bater com o salvo e a resposta é rejeitada. Use sempre.
Onde roda?
Inteiramente no seu navegador. Verifier vem de `crypto.getRandomValues()` e SHA-256 de `crypto.subtle.digest()` — ambas Web Crypto API. Nada é transmitido.

Ferramentas relacionadas