¿Es seguro usar OAuth (concesión de credenciales de contraseña del propietario del recurso) para la autenticación?

1

Específicamente, ¿tengo que preocuparme por el confuso problema del diputado si estoy tratando de autorizar a un usuario contra una sola API?

Por ejemplo: un servicio de mensajería básico querrá autenticarse y luego autorizar a un usuario a enviar un mensaje.

Al usar una aplicación móvil, ¿es seguro / inteligente usar la concesión de credenciales de contraseña del propietario del recurso en OAuth2 como una forma de autenticación y autorización para que un usuario envíe un mensaje a través de esta API?

    
pregunta d1str0 07.09.2016 - 23:34
fuente

2 respuestas

1

El mayor problema de seguridad asociado con la concesión de credenciales de contraseña del propietario del recurso es que la aplicación / cliente está al tanto de la contraseña del usuario.

Por ejemplo, si la aplicación / cliente era de una compañía AwesomeACME y el proveedor de identidad era Google, ciertamente no querría que la aplicación / cliente de AwesomeACME supiera mi contraseña de Google.

Sin embargo, si AwesomeACME también es el IdP, me preocuparía menos, pero aún así me preguntaría por qué no usaron la Subvención del Código de Autorización.

    
respondido por el HTLee 16.01.2018 - 23:18
fuente
0

El problema con la concesión de credenciales de contraseña es que las credenciales se transmiten en texto sin formato. No es un problema en sí mismo, si el backend está cerrado (servidor), pero eso anula el propósito del método de autenticación de su cliente.

OAuth se puede usar para probar la autenticación de objetos, pero no puede usar OAuth para eso. La mejor manera sería utilizar la concesión de código de autenticación y enviar al usuario a una página de inicio de sesión en el proveedor de OAuth a través de una vista web. La primera vez que el usuario puede decidir aceptar o rechazar el cliente OAuth. Después de eso, el cliente (su aplicación) puede comunicarse con la API utilizando el token de acceso al portador. Si el proveedor de OAuth asocia el token de acceso con el objeto de autenticación (lo recomiendo), la API siempre es capaz de verificar el estado de autenticación.

Para una autenticación más sofisticada, realmente deberías considerar JWT. JWT y OAuth juegan bien juntos y se llevan lo mejor de ambos.

    
respondido por el Yorick de Wid 08.09.2016 - 11:21
fuente

Lea otras preguntas en las etiquetas