AZ Tools

Generador OAuth 2.0 PKCE

Red

PKCE (Proof Key for Code Exchange, RFC 7636) es el flujo OAuth 2.0 moderno recomendado para TODOS los clientes públicos — SPAs, móviles y apps de escritorio que no pueden guardar un client_secret seguro. Esta herramienta genera un `code_verifier` criptográficamente aleatorio (43-128 caracteres del alfabeto URI no reservado), deriva el `code_challenge` (SHA-256 codificado en base64url para S256, o el verifier para `plain`) y construye la URL completa con `state` para protección CSRF. El `curl` adjunto muestra el intercambio de token con todos los parámetros listos — solo pega el `code` del callback.

Cómo usar

  1. Define la longitud del verifier (64 es buen default; mínimo 43, máximo 128).
  2. Elige S256 (siempre preferido) o plain (solo servidores legacy).
  3. Completa `client_id`, `redirect_uri`, `scope` y los endpoints OAuth.
  4. Manda al usuario a la URL de autorización. Cuando vuelva con `?code=...`, ejecuta el curl con ese código para obtener tokens.

Preguntas frecuentes

S256 vs plain, ¿cuál usar?
Siempre S256. Plain envía el verifier como challenge — sin protección si interceptan la solicitud. S256 envía solo SHA-256 del verifier, así el verifier nunca aparece en el paso 1. RFC 7636 indica que los clientes deben rechazar plain si S256 está disponible.
¿Por qué estos caracteres en el verifier?
RFC 7636 especifica el alfabeto del verifier como `[A-Z][a-z][0-9]-._~` — caracteres URI no reservados de RFC 3986. Esto lo hace seguro en URLs, headers y bodies sin escapado.
¿Para qué `state`?
Cadena aleatoria opaca que el cliente genera por solicitud y valida en el callback. Previene CSRF: si un atacante engaña al usuario para hacer click en una redirección maliciosa, el `state` no coincidirá con el guardado y la respuesta se rechaza. Úsala siempre.
¿Dónde corre?
Íntegramente en tu navegador. El verifier viene de `crypto.getRandomValues()` y SHA-256 de `crypto.subtle.digest()` — ambas Web Crypto API. Nada se envía.

Herramientas relacionadas