Flujo OAuth2: ¿el servidor se valida con el servidor Auth?

10

He estado leyendo mucho sobre OAuth2 tratando de entenderlo, pero todavía estoy confundido acerca de algo.

Entiendo que el cliente autoriza con el proveedor de OAuth (Google, por ejemplo) y permite que el servidor de recursos tenga acceso a los datos del perfil del usuario. Luego, el cliente puede enviar el token de acceso al servidor de recursos y se le devolverá el recurso.

Pero lo que no parece estar cubierto en ninguna documentación es lo que sucede cuando la aplicación cliente solicita un recurso al servidor de recursos y le pasa el token de acceso. Todo lo que he leído hasta ahora indica que el servidor de recursos solo responde con el recurso solicitado.

Pero eso parece un gran agujero, seguramente el servidor de recursos debe validar de alguna manera el token de acceso, de lo contrario podría falsificar cualquier solicitud anterior y pasar un token viejo, robado, falso o generado aleatoriamente y simplemente lo aceptaría.

¿Alguien puede señalarme una explicación fácil de seguir de OAuth2 porque hasta ahora los que he leído se sienten incompletos?

drekka
fuente

Respuestas:

8

Lo encontré. Enterrado en la especificación. Dicen que el servidor de recursos debe validar el token de acceso con el servidor de autenticación, pero que está fuera del alcance del documento. Lástima, habría pensado que la validación de token era una parte importante.

drekka
fuente
1
Sobre partes importantes , podría valer la pena leer esta publicación de blog para obtener algunos antecedentes sobre las prioridades de OAuth2.
Lars Viklund
1
Gracias por eso, una lectura interesante. Mis requisitos son bastante simples, ya que quiero permitir que una aplicación de iOS se autentique con google, twitter, facebook, etc., pase algún tipo de autorización a mi servidor y haga que mi servidor lo valide y permita el acceso a los recursos. El problema ha resultado ser más complejo de lo que esperaba debido a las complejidades de comprender cómo funciona esto y qué tengo que hacer dónde.
drekka
Más precisamente, Apéndice A: "Para validar la firma en la solicitud, el recurso protegido podría enviar el identificador de token al punto final de introspección del servidor de autorización para obtener la información clave necesaria para ese token. Los detalles de este uso están fuera el alcance de esta especificación y se definirá en una extensión [...] ".
JulienD
2

La validación de tokens generalmente se maneja de 1 a 2 formas.

1) El token se firma criptográficamente utilizando claves previamente compartidas. Esto tiene obvios defectos para su uso en sistemas distribuidos y en proliferación.

2) El servidor de autorización (AS) proporciona un punto final para la validación de token o introspección. Este método se estandarizó en IETF RFC 7662 en octubre de 2015, consulte: https://tools.ietf.org/html/rfc7662

Esta pregunta / respuesta de desbordamiento de pila incluye ejemplos de Google y Github: /programming/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server

Howie Ross
fuente
0

lees especificaciones sobre cómo validar el token:

https://tools.ietf.org/html/rfc7662

Espero que esto ayude, por favor márquelo como respuesta si responde a su consulta / problema

Chirag
fuente
44
Bienvenido a Ingeniería de software. En su forma actual, esta respuesta no cumple con nuestras pautas de calidad . Esperamos que las respuestas sean independientes: los lectores deben seguir enlaces externos solo para obtener una comprensión más profunda o para confirmar las fuentes y el contenido relevante debe citarse aquí.
Thomas Owens