Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Validar el token de identidad y el de acceso

5 tareas · 40 min · Principiante

Un token firmado no se valida comprobando solo la firma. Hay que saber para quién es, quién lo emitió, de qué tipo es y si sigue vigente, y usar el dato correcto para saber de quién se trata. Reservas Ocavita te entrega cómo su web valida el token de identidad, cómo su API valida el de acceso, la cabecera y el contenido decodificados de cuatro tokens que llegaron a la API y lo que la API hizo con cada uno.

0 de 5 · 0%

Objetivo de la sala

Un token firmado no se valida comprobando solo la firma. Hay que saber para quién es, quién lo emitió, de qué tipo es y si sigue vigente, y usar el dato correcto para saber de quién se trata. Reservas Ocavita te entrega cómo su web valida el token de identidad, cómo su API valida el de acceso, la cabecera y el contenido decodificados de cuatro tokens que llegaron a la API y lo que la API hizo con cada uno.

El token de identidad de OpenID Connect es para el cliente: su aud es el client_id de la aplicación que pidió el inicio de sesión. Según OpenID Connect Core 1.0, el cliente comprueba que el emisor (iss) es exactamente el esperado, que su propio client_id está en aud, la firma con el algoritmo esperado y las claves del emisor, que no venció (exp) y que el nonce coincide con el del inicio.

El token de acceso es para la API. Cuando es un JWT, RFC 9068 define su perfil: lleva el tipo at+jwt en la cabecera para que nadie lo confunda con otro JWT, su aud nombra a la API, y la API debe rechazar lo que no sea de ese tipo, no venga de su emisor, no la nombre como destinataria o esté vencido. Usar un token de identidad para llamar a una API, o aceptar un token de acceso como prueba de inicio de sesión, mezcla dos cosas que el estándar separa a propósito.

Responde para continuar

¿Para quién es cada token en una integración bien hecha?

Ver pista de ayuda

Fíjate en qué valor va en el aud de cada uno.

OpenID Connect Core es tajante en esto: la única forma estable y única de identificar a una persona es la pareja emisor y sujeto (iss y sub). El sujeto no se reasigna dentro de un emisor. El correo, el teléfono o el nombre de usuario sí pueden cambiar o reutilizarse con el tiempo, y por eso la especificación dice que no se usen como identificador único. Una aplicación que elige la cuenta local por el correo hereda cualquier descuido del proveedor sobre ese dato.

Abre validar_identidad.py y mira qué reclamo usa cuenta_local.

Responde para continuar

¿Con qué reclamo del token busca o crea la web la cuenta local del huésped? Escríbelo tal como aparece en el código.

Las bibliotecas de JWT suelen comprobar el destinatario solo si se les dice cuál esperar, y casi todas permiten apagarlo con una opción. Apagarla para que «deje de dar errores» significa aceptar como inicio de sesión un token emitido para otra aplicación del mismo proveedor. En validar_identidad.py la llamada a jwt.decode pasa el emisor y el algoritmo, pero no pasa a quién debe ir dirigido el token.

Responde para continuar

¿Qué opción de la llamada a jwt.decode desactiva la comprobación del destinatario? Escribe solo su nombre.

Ahora la API. Lee api_tokens.py: qué destinatarios acepta y si mira el tipo de token. Después recorre tokens-presentados.txt buscando el que no tiene forma de token de acceso (mira la cabecera, el aud y los reclamos que trae o no trae), y confírmalo en peticiones-api.txt.

Responde para continuar

¿Qué token aceptó la API aunque es un token de identidad y no uno de acceso? Escribe su identificador.

El equipo de la API propone tres cambios y solo hay tiempo para uno esta semana. Solo uno de ellos impide que un token de identidad vuelva a entrar como si fuera de acceso. Vuelve a la cabecera, al aud y a la hora de vencimiento del token que encontraste en la tarea anterior, y a las líneas de api_tokens.py que lo dejaron pasar.

Responde para continuar

¿Qué cambio en api_tokens.py impide que un token de identidad se acepte como token de acceso?

Ver pista de ayuda

Compara el alg, el aud y el exp de ese token con lo que comprueba la API.

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