🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEl flujo de código con PKCE y los flujos que se desaconsejan
5 tareas · 40 min · Principiante
Un cliente puede pedir acceso de varias maneras y no todas son igual de seguras. En Terracota Logística, el punto de autorización registró en una mañana ocho solicitudes de cinco aplicaciones, y no todas piden lo mismo ni con las mismas protecciones. Aprendes cómo funciona el flujo recomendado, el de código con PKCE, por qué el implícito se desaconseja, y lees el registro para ver qué cliente se aparta de la política. Solo lectura.
Objetivo de la sala
Un cliente puede pedir acceso de varias maneras y no todas son igual de seguras. En Terracota Logística, el punto de autorización registró en una mañana ocho solicitudes de cinco aplicaciones, y no todas piden lo mismo ni con las mismas protecciones. Aprendes cómo funciona el flujo recomendado, el de código con PKCE, por qué el implícito se desaconseja, y lees el registro para ver qué cliente se aparta de la política. Solo lectura.En el flujo de código de autorización el cliente manda a la persona al servidor de autorización. Allí se identifica y consiente. El servidor la devuelve al cliente con un código de un solo uso en la dirección de retorno, y el cliente lo canjea por tokens en una llamada directa al servidor, por un canal que no pasa por el navegador.
El riesgo es que alguien que vea el código lo use antes que el cliente legítimo. PKCE (RFC 7636) lo evita: el cliente inventa un secreto al azar, el code_verifier (de 43 a 128 caracteres), y manda en la primera petición solo su huella, el code_challenge, con el método S256 (huella SHA-256 codificada en base64url). Al canjear el código manda el secreto original y el servidor comprueba que coincide con la huella. Un código copiado no sirve sin el secreto. El método plain envía el secreto sin transformar y la propia RFC lo reserva para clientes que no pueden hacer la huella.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Por qué un código de autorización interceptado no le sirve a quien lo robó cuando el cliente usa PKCE?
En el flujo implícito (response_type=token) el servidor no entrega un código sino el token de acceso mismo, en el fragmento de la dirección del navegador. Nació cuando las páginas web no podían hacer llamadas a otros dominios. Hoy ya no hace falta, y es peor: el token queda expuesto en el historial, en registros intermedios y en cualquier script de la página, y no hay forma de ligarlo a quien lo pidió. La guía de seguridad vigente de OAuth 2.0 (RFC 9700) pide no usarlo y emplear en su lugar el flujo de código con PKCE.
Abre el laboratorio, mira la tabla solicitudes_de_autorizacion y busca el cliente que pide el token directamente.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Qué cliente usa response_type=token en el registro de solicitudes?
La RFC 9700 exige PKCE a los clientes públicos y lo recomienda también a los confidenciales. Una solicitud puede estar mal de dos maneras: no traer desafío (el guion de la columna code_challenge_method) o traerlo con un método débil. En el registro hay un cliente que manda su desafío con plain: el secreto viaja a la vista en la misma petición que el servidor ve y que el navegador deja en sus registros, así que el desafío no cumple su función.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Qué cliente envía su desafío con el método plain?
Mira de nuevo las dos filas de resultado del flujo implícito: el token queda «entregado en el fragmento de la URL». Ese resultado resume el problema entero. Cuando el token viaja por el navegador, cualquier cosa que lea la dirección puede guardarlo, y no hay una llamada posterior en la que el servidor compruebe que quien lo recibe es quien lo pidió.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Cuál es la razón principal por la que se desaconseja el flujo implícito?
Para saber cuánto del tráfico ya sigue el flujo recomendado, cuenta las solicitudes que piden un código (response_type=code) y mandan además el desafío S256. Las demás, sea por falta de desafío, por método plain o por flujo implícito, son las que hay que corregir.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Cuántas de las ocho solicitudes piden código con desafío S256?
Conectando con la base…
Tablas
clientes_registrados
- cliente
- tipo_de_cliente
- donde_corre
solicitudes_de_autorizacion
- hora
- cliente
- response_type
- code_challenge_method
- state
- resultado
El resultado aparece aquí.
fila(s)
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.