OAuth: ¿Cómo valida el servidor de recursos que el token de acceso no es para ningún otro servidor de recursos?

2

Tomemos un ejemplo donde hay dos servidores de recursos: RS1 y RS2 y hay un servidor de autorización: AS.

Ambos servidores de recursos: RS1 y RS2 usan el servidor de autorización - AS

Si un cliente solicita un token de acceso para RS1 y lo pasa a RS2, ¿cómo lo validará y fallará RS2?

Una posibilidad es depender de las verificaciones de alcance, pero parece que las verificaciones de alcance no son más que comparaciones de cadenas (¿o me equivoco aquí?). En ese caso, si tanto RS1 como RS2 definen exactamente el mismo nombre de ámbito (por ejemplo, Read ), entonces no hay confiabilidad incluso con los ámbitos.

    
pregunta Abhinav 21.06.2018 - 16:36
fuente

2 respuestas

3

También puede usar el token web JSON (JWT) ( enlace ).

El JWT incluye un parámetro "aud" para especificar la audiencia del token emitido. Los servicios de recursos deben verificar la firma del token y los datos que contiene.

Consulte enlace

Otra solución sería asociar un servidor de recursos al token de acceso mediante la creación de una nueva propiedad (que contenga un nombre o url o el ID de cliente para identificar su "servidor de recursos" autorizado).  Luego, verificar este parámetro depende de cómo funciona la comunicación entre su servidor de autorización y sus servidores de recursos.

    
respondido por el Alex83690 29.06.2018 - 17:05
fuente
0

Podría agregar algún tipo de espacio de nombres a los ámbitos. Para RS1, los ámbitos tienen el prefijo "RS1 ::" para RS2 los ámbitos tienen el prefijo "RS2 ::". Entonces, si ambos servidores de recursos tienen un alcance leído, el alcance para RS1 sería "RS1 :: leer" para RS2 sería "RS2 :: leer".

    
respondido por el DanielE 21.06.2018 - 17:13
fuente

Lea otras preguntas en las etiquetas