¿Cómo puede un usuario obtener una autenticación sin autorización?

2

Tengo un back-end (API) y un front-end, por ejemplo, un servidor web, y tengo usuarios y proveedores de ID.

El servidor web es proporcionado por una tercera parte y puede ser una aplicación móvil, pero en cualquier caso, el usuario lo usa para acceder a sus datos.

En general, los usuarios necesitarán la Aplicación (Web of Mobile) para poder hacer todo por ellos porque la API solo proporciona respuestas de bajo nivel en formato JSON. Entonces, cuando un usuario solicita que se autorice un front-end, eso le da acceso completo a lo que el usuario pueda hacer.

Los usuarios se registran y autentican a través de sus cuentas de Google / FB / Twitter, etc. para que la API no tenga que preocuparse por las contraseñas y facilitar el registro.

Cuando el usuario ve un recurso, por ejemplo, sus mensajes o el historial o perfil de la cuenta en el back-end, lo hacen a través de un front-end.

El front-end luego pasa la solicitud del recurso a la API (que se implementa de manera REST-ish). Mi entendimiento es que para que esto funcione, oAuth se usará para Autorizar el sitio web para solicitar la información privada del usuario.

Por favor, corrija mi entendimiento: Después del registro, el usuario inicia sesión en el front-end. El Front-end luego recupera información para el usuario del back-end a través de "oAuth Autorizado solicitudes HTTP", (oAuth 2.0 para ser específico)

¿El Back-end ve que la solicitud está autorizada pero no sabe quién se conectó (presumiblemente todavía) durante este proceso? Entonces, ¿cómo sabe el back-end a qué buzón o perfil o historial de transacciones debe servir?

La API codificará el buzón especificado o el historial de transacciones en el URI, pero realmente la pregunta es ¿cómo sabe el servidor que el front-end está solicitando el buzón correcto para el usuario con sesión iniciada actualmente?

    
pregunta Johan 22.01.2015 - 10:50
fuente

2 respuestas

1

El oAuth establece un token de sesión para cada usuario. Cuando el usuario ha iniciado sesión en el extremo delantero, los front end envían el token al back end y no el nombre de usuario y la contraseña. Usando este token, el backend autentica al usuario y muestra su perfil. Entonces, al usar este token, el back-end reconoce al usuario y muestra su perfil en el front-end. más información

    
respondido por el Irfan 22.01.2015 - 12:56
fuente
0

esta pregunta es similar a la que se publicó aquí: Inicie sesión en un sitio con las credenciales de otro sitio junto con mi respuesta.

Pero enfocaré esta respuesta en su preocupación específica. Si entiendo su pregunta correctamente, usted está preguntando cómo su back-end puede confiar en los datos que le están entregando. Esencialmente, lo estás pensando un poco mal. Cuando inicia una transacción OAuth, el propietario del recurso proporciona sus credenciales directamente al servicio (Google, por ejemplo). Algunas cosas suceden, luego Google le devuelve un token de acceso (portador). Ese token se usa para obtener datos de Google, como el nombre de usuario o la dirección de correo electrónico. Si está utilizando su cliente de front-end para hacer una solicitud de API a Google para esa información, simplemente coloque esos datos directamente en su DOM. Lo que no debería hacer es solicitar datos de su front-end, luego tomar esos datos y enviarlos a su back-end para la información de usuario de arranque (o lo que sea), entonces sí, eso es un problema de seguridad y confianza. t hacer eso). El objetivo de utilizar OAuth es que no tenga que confiar en su back-end.

    
respondido por el Alex Urcioli 22.01.2015 - 18:12
fuente

Lea otras preguntas en las etiquetas