Encontré esto en otro SO hilo:
Pasos:
- El usuario se conecta al sitio web habilitado para OpenID.
- El usuario ingresa información de credenciales.
- Una POST se realiza con un BASE64 (sitio web para el proveedor)
- Se construye una respuesta (que contiene caducidad)
- El sitio web redirige al usuario al proveedor para iniciar sesión.
- El usuario ingresa la contraseña y la envía.
- La verificación está hecha.
- ¡Iniciar sesión!
¿Cómo se aseguran los pasos 6-8? A mi modo de ver, el cliente se está autenticando con el proveedor e informando el resultado a nuestro servidor.
¿Qué impide que el cliente falsifique el resultado de la autenticación?
Respuestas
2 para la respuesta № 1Principalmente, el resultado de la autenticación está firmado criptográficamente por el proveedor. También hay otras medidas de seguridad que protegen contra otros ataques.
Citando el Especificación OpenID 2.0, sección 11.:
Cuando la Parte dependiente recibe una afirmación positiva, DEBE verificar lo siguiente antes de aceptar la afirmación:
- El valor de "openid.return_to" coincide con la URL de la solicitud actual (Sección 11.1)
- La información descubierta coincide con la información de la aserción (Sección 11.2)
- Aún no se ha aceptado una aserción de este OP con el mismo valor para "openid.response_nonce" (Sección 11.3)
- La firma en la aserción es válida y todos los campos que deben firmarse están firmados (Sección 11.4)
El cliente puede, por supuesto, enviar un resultado de autenticación falso, pero no pasará la verificación.