🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónCódigo de autorización con PKCE
5 tareas · 40 min · Principiante
El flujo de código es el que queda en pie, y PKCE es lo que lo vuelve seguro para aplicaciones que no pueden guardar un secreto. Pero PKCE solo protege si el cliente lo genera bien y el servidor lo exige de verdad. Reservas Ocavita te entrega una muestra de solicitudes de autorización ya decodificadas, el canje de esos mismos códigos, la política de PKCE de su servidor y el código del panel de anfitriones migrado al flujo de código.
Objetivo de la sala
El flujo de código es el que queda en pie, y PKCE es lo que lo vuelve seguro para aplicaciones que no pueden guardar un secreto. Pero PKCE solo protege si el cliente lo genera bien y el servidor lo exige de verdad. Reservas Ocavita te entrega una muestra de solicitudes de autorización ya decodificadas, el canje de esos mismos códigos, la política de PKCE de su servidor y el código del panel de anfitriones migrado al flujo de código.En el flujo de código, el servidor de autorización no entrega el token en el navegador: entrega un código de un solo uso que el cliente canjea después, por un canal directo, en el punto /token. El riesgo es que ese código se filtre en el camino (un esquema propio que otra app del teléfono también registra, un registro, una redirección) y lo canjee alguien distinto de quien lo pidió.
PKCE (RFC 7636) cierra ese hueco con un secreto de un solo uso que nunca viaja por el navegador. Antes de redirigir, el cliente genera un verificador aleatorio y envía solo su huella SHA-256 codificada, el reto. Al canjear el código, presenta el verificador; el servidor calcula la huella y la compara con el reto que guardó. Quien solo tiene el código no tiene el verificador. RFC 9700 lo exige a los clientes públicos, lo recomienda también a los confidenciales y pide que el servidor lo soporte.
Responde para continuar
¿Qué impide PKCE cuando se usa bien?
Ver pista de ayuda
Piensa en qué momento del flujo se presenta el verificador.
RFC 7636 define dos formas de calcular el reto. La que se debe usar es S256, la huella SHA-256 del verificador. La otra existe solo por compatibilidad con clientes que técnicamente no puedan calcular un hash: en ella el reto es el verificador tal cual, así que cualquiera que vea la solicitud de autorización (un registro, un proxy, el historial) ya tiene lo que se presentará en el canje. El RFC dice que no debe usarse en implementaciones nuevas.
Abre solicitudes-autorizacion.txt y compara el método de las dos versiones de la app móvil.
Responde para continuar
¿Qué valor de code_challenge_method envía la app 4.9 para iOS?
Un reto que el servidor guarda y luego no comprueba es decoración. Si un código se pidió con reto, su canje debe traer el verificador que corresponde, y si no lo trae, el servidor debe rechazarlo con invalid_grant. Un modo «opcional» que acepta el canje cuando el verificador falta deja la protección en manos de quien canjea, que es justo la persona de la que PKCE protege.
Cruza politica-pkce.yml con las dos muestras: qué código llevaba reto en la solicitud y llegó al canje sin verificador.
Responde para continuar
¿Qué código se emitió con reto y se canjeó sin code_verifier, y aun así recibió tokens? Escribe su identificador.
El verificador es un secreto: si se puede predecir, PKCE no protege nada. El RFC pide que tenga entre 43 y 128 caracteres de un alfabeto concreto y sugiere generarlo con 32 bytes de un generador criptográfico codificados en base64url, que dan 43 caracteres. En el navegador, el generador apropiado es el de la interfaz criptográfica (crypto.getRandomValues); los generadores pensados para animaciones o juegos no sirven para secretos.
Abre pkce-anfitriones.js y sigue la función que arma el verificador.
Responde para continuar
¿Qué función aporta el azar en crearVerificador? Escríbela con su objeto, sin paréntesis.
El equipo del panel defiende su versión: usa S256, guarda el verificador solo en la pestaña y su alfabeto es el que pide el RFC. Vuelve a crearVerificador y compara cada propiedad con lo que acabas de leer en la tarea anterior.
Responde para continuar
Además del generador, ¿qué incumple crearVerificador frente a RFC 7636?
Ver pista de ayuda
Mira el límite del bucle.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.