OAuth2 y vincular los recursos de un propietario a la cuenta de otra persona

1

Estoy implementando OAuth del lado del cliente y me preocupa el siguiente escenario.

Hay una aplicación A registrada con el servicio B que ofrece acceso a sus recursos de usuario, autorizada por OAuth (Confidencial, flujo de código de autorización).

Ahora hay un usuario malintencionado X que se registrará en la aplicación A y capturará el redireccionamiento inicial de OAuth, lo cual es trivial, ya que utiliza el navegador Xs.

Si logra obtener un usuario de Bs (llamémoslo C) para abrir el enlace, B mostrará que A está solicitando acceso. Si A es un nombre bien conocido, existe la posibilidad de que el usuario apruebe el acceso.

Ahora el servidor de autorizaciones Bs está redirigiendo al usuario a A y A recuperará el token de acceso y lo usará para acceder a los recursos de Cs.

Esto es lo que me preocupa: si A utiliza state para identificar el proceso de autorización, sabrá que X inició la solicitud. Si no autentica por separado al usuario C, conectará los recursos C a X cuenta.

¿Es esta una preocupación válida? ¿O hay algo en OAuth que previene tal ataque?

¿Es correcto decir: 'si el cliente OAuth tiene sus propios usuarios, DEBE autenticarlos al ejecutar la devolución de llamada de respuesta de autorización - y no puede confiar en el parámetro state para ese propósito'?

¿Hay alguna mitigación adicional que deba aplicarse? Por ejemplo, acelerando la velocidad a la que X puede iniciar el proceso de OAuth, ¿en caso de que esté intentando alimentar múltiples enlaces a múltiples objetivos con la esperanza de que alguien caiga en la trampa? ¿Limitar el tiempo para el que es válido state dado? ¿Otro?

    
pregunta AGrzes 01.08.2018 - 10:40
fuente

0 respuestas

Lea otras preguntas en las etiquetas