tutorial oauth oauth-2.0 openid-connect

tutorial - ¿Diferencia entre el "estado" OAuth 2.0 y el parámetro "nonce" OpenID? ¿Por qué el estado no puede ser reutilizado?



openid connect vs oauth2 (1)

Estado y nonce parecen ser similares. Pero si profundizas, encontrarás que tienen diferentes propósitos.

El estado está allí para proteger al usuario final de los ataques de falsificación de solicitud entre sitios (CSRF). Se introduce desde el protocolo OAuth 2.0 RFC6749 . Protocolo establece que,

Una vez que se ha obtenido la autorización del usuario final, el servidor de autorización redirige al usuario-agente del usuario final al cliente con el valor de enlace requerido contenido en el parámetro "estado" . El valor de enlace permite al cliente verificar la validez de la solicitud haciendo coincidir el valor de enlace con el estado autenticado del agente de usuario

Y esto se utiliza en la solicitud de autorización. Permite al cliente validar que la respuesta de autorización no sea alterada y enviada por el servidor original que autentifica. la solicitud fue enviada En resumen, permite al cliente realizar una verificación cruzada de la solicitud de autorización y la respuesta.

Nonce tiene un propósito diferente. Enlaza los tokens con el cliente. Sirve como un parámetro de validación de token y se introduce a partir de la especificación de OpenID Connect .

nonce : valor de cadena utilizado para asociar una sesión de Cliente con un token de ID y para mitigar los ataques de reproducción. El valor se pasa sin modificar desde la solicitud de autenticación al token de ID. Si está presente en el token de ID, los clientes DEBEN verificar que el valor de reclamación de nonce sea igual al valor del parámetro de nonce enviado en la solicitud de autenticación. Si está presente en la solicitud de autenticación, los servidores de autorización DEBEN incluir una reclamación nonce en el token de ID con el valor de reclamación siendo el valor nonce enviado en la solicitud de autenticación. Los servidores de autorización NO DEBEN realizar ningún otro procesamiento en los valores de nonce utilizados. El valor nonce es una cadena que distingue entre mayúsculas y minúsculas

Como puede ver, el valor de nonce se origina a partir de la solicitud de autorización y es generado por el cliente. Y si se incluye nonce, estará presente en el token. Por lo tanto, el cliente puede validar el token que recibió contra la solicitud de autorización inicial, asegurando así la validez del token.

Además, dependiendo del tipo de flujo, nonce puede ser un parámetro obligatorio. El flujo implícito y el flujo híbrido imponen el valor de nonce . Ambos valores son generados y validados por la aplicación cliente.

¿Por qué el estado no puede ser reutilizado?

Si se captura una solicitud de autorización, la parte maliciosa puede falsificar la respuesta de autorización. Esto puede evitarse alterando el parámetro de estado.

OAuth 2.0 define el parámetro "estado" que se enviará en la solicitud del cliente para evitar ataques de solicitud entre sitios. Lo mismo se menciona en la especificación de OpenID para "nonce". Aparte del hecho de que "nonce" se devuelve en el token de ID en lugar de los parámetros de consulta, parecen servir exactamente para el mismo propósito. Si alguien puede explicar por qué están separados