Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Có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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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