🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónState, nonce y protección del retorno
5 tareas · 40 min · Principiante
El retorno es la ruta del cliente que recibe la respuesta de autorización, y lo puede abrir cualquiera con un enlace. Lo que lo protege es comprobar que la respuesta pertenece a un inicio que empezó ese mismo navegador, que el token de identidad es de ese inicio y que viene del proveedor al que se fue. Reservas Ocavita te entrega el código de inicio y retorno de su web, la configuración publicada de sus dos proveedores, los retornos de una mañana y la queja de una huésped que terminó dentro de la cuenta de otra persona.
Objetivo de la sala
El retorno es la ruta del cliente que recibe la respuesta de autorización, y lo puede abrir cualquiera con un enlace. Lo que lo protege es comprobar que la respuesta pertenece a un inicio que empezó ese mismo navegador, que el token de identidad es de ese inicio y que viene del proveedor al que se fue. Reservas Ocavita te entrega el código de inicio y retorno de su web, la configuración publicada de sus dos proveedores, los retornos de una mañana y la queja de una huésped que terminó dentro de la cuenta de otra persona.Tres valores atan la respuesta al inicio, y cada uno responde una pregunta distinta. El state es un valor aleatorio que el cliente guarda en la sesión del navegador y recibe de vuelta en el retorno: responde «¿esta respuesta es de un inicio que yo empecé aquí?». El nonce es otro valor aleatorio que el cliente envía y que el proveedor copia dentro del token de identidad: responde «¿este token es de ese inicio y no uno viejo reutilizado?». El verificador de PKCE responde «¿quien canjea el código es quien lo pidió?».
RFC 9700 admite que PKCE haga también de protección contra peticiones cruzadas en el retorno, pero solo si el servidor de autorización lo exige siempre; si no, el cliente debe usar state o nonce. Los tres tienen en común algo que suele olvidarse: valen solo si son únicos por inicio y si su ausencia se trata como fallo.
Responde para continuar
¿Qué pregunta responde el nonce de OpenID Connect?
Ver pista de ayuda
Piensa en dónde termina copiado el nonce.
Un nonce sirve porque solo el navegador que empezó el inicio lo conoce. Si es una constante, cualquier token de identidad que ese proveedor emita para esa aplicación lo trae, y la comprobación del retorno pasa con el token de cualquier persona. La razón que dejó escrita el equipo en el comentario es un malentendido frecuente: el proveedor exige que el valor vaya, no que sea siempre igual.
Abre retorno.py y busca qué valor se envía como nonce y con qué se compara después.
Responde para continuar
¿Qué valor envía la web como nonce en todos los inicios de sesión? Escríbelo tal como aparece.
El state se comprueba en el retorno: se saca de la sesión y se compara con el recibido. La pregunta importante es qué pasa cuando en la sesión no hay ninguno, que es justo lo que ocurre cuando alguien abre un enlace de retorno preparado en otro navegador: la persona queda dentro de una cuenta que no es suya y todo lo que guarde después se va a esa cuenta. La regla segura es fallar cerrado: sin state guardado, el retorno se rechaza.
Lee la condición del retorno en retorno.py, cruza registro-retornos.txt y compara con queja-QJ-882.txt.
Responde para continuar
¿Qué sesión completó un retorno sin haber pasado por el inicio y terminó con una tarjeta guardada? Escribe su identificador.
Cuando un cliente trabaja con varios servidores de autorización y recibe todas las respuestas en la misma ruta, necesita saber de cuál viene cada una antes de canjear el código; si no, puede mandar un código al punto de token equivocado o confiar en una respuesta que no es del proveedor al que envió a la persona. Es la confusión entre proveedores que describe RFC 9700. La defensa que recomienda es que el servidor se identifique dentro de la respuesta de autorización, como define RFC 9207, y que el cliente compare ese valor con el emisor al que envió a la persona; la alternativa más débil es una ruta de retorno distinta por proveedor.
Cruza metadatos.txt y registro-retornos.txt con lo que lee retorno.py de la respuesta.
Responde para continuar
¿Qué parámetro de la respuesta anuncian los dos proveedores y llega en el registro, pero retorno.py nunca lee?
El retorno que encontraste en la tarea 3 no tenía state ni verificador en la sesión, y aun así el canje y la validación del token de identidad pasaron. Lee la nota de Quiba en metadatos.txt, la línea de ese retorno en el registro y la comparación del nonce en retorno.py.
Responde para continuar
¿Qué combinación dejó pasar ese retorno sin inicio?
Ver pista de ayuda
Mira de qué proveedor era la respuesta según el registro.
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.