¿Se puede usar un parámetro de "estado" de auth2 para evitar el uso de cookies de sesión para identificar usuarios?

4

enlace declara:

  

4.1.1. Solicitud de Autorización "

     

"estado"

     

RECOMENDADO. Un valor opaco usado por el cliente para mantener            Estado entre la solicitud y devolución de llamada. La autorizacion            El servidor incluye este valor al redireccionar al agente de usuario.            al cliente. El parámetro DEBERÍA ser usado para prevenir            falsificación de solicitudes en sitios cruzados como se describe en la Sección 10.12.

¿Es seguro usar un parámetro de "estado" que genero ( uuid/v4 ) en la solicitud de autorización OAuth2 además de la protección CSRF para identificar al usuario en la devolución de llamada del proveedor en el flujo de autorización? Por lo tanto, hacer que el flujo de auth2 sea "sin estado" y no requiera "sesiones pegajosas" para el equilibrador de carga.

Actualmente, cuando un usuario inicia el flujo de OAuth2 (visita la página de inicio de sesión), creo un único auth-request-id y state para él, lo almaceno en Redis y envío el auth-request-id en las cookies.

Después de que el usuario inicie sesión en el proveedor (Google o Facebook) en la solicitud de devolución de llamada, trato de encontrar la sesión del usuario en la cookie auth-request-id en Redis y validar si existe una sesión y que el state recibido coincide con la uno que envié (contra ataques CSRF).

Preguntándome: ¿puedo omitir la creación de la cookie auth-request-id e identificar al usuario en la devolución de llamada mediante el state ? Dada la lógica, si no se puede encontrar state coincidente en Redis, suponga que el estado no es válido y que todos los Redis almacenados state tienen un tiempo de caducidad de 5 minutos.

    
pregunta Renārs Vilnis 19.10.2018 - 13:53
fuente

1 respuesta

0

Creo que no puedes hacer esto de forma segura.

El actor malintencionado puede obtener redirecciones libremente utilizando su aplicación. Ahora, si se las arregla para hacer que una víctima desprevenida abra una dirección de redireccionamiento, la víctima verá que Su solicitud está solicitando acceso. Si él le otorga acceso, será redirigido nuevamente a usted, si usa solo el estado para identificarlo, simplemente asignó recursos de víctima a la cuenta de actor malintencionado en su aplicación.

    
respondido por el AGrzes 19.10.2018 - 15:19
fuente

Lea otras preguntas en las etiquetas