Estoy tratando de encontrar la mejor manera de asegurar una API utilizando los ámbitos y / o reclamos de oAuth. No estoy seguro de lo que debo usar.
Mi configuración es la siguiente:
-
Todos los usuarios inician sesión en
signin.domain.com
-
Hay varios clientes
www.domain.com
yadmin.domain.com
-
Hay un servidor de recursos
api.domain.com
-
Hay varios ámbitos
data.read
ydata.write
-
www.domain.com
solicita un alcancedata.read
yadmin.domain.com
solicita ambos ámbitosdata.read
ydata.write
-
Algunos usuarios que son administraciones deben poder escribir datos (por ejemplo, POST en api.domain.com) pero todos los usuarios autenticados pueden leer.
Tal como lo entiendo, a los usuarios que inicien sesión con el cliente www.domain.com
no se les emitirá un token que contenga el alcance data.write
, incluso si el cliente lo solicita.
He leído que los ámbitos son una clase de categorías de reclamos [1]. ¿Esto significa que si un cliente solicita un alcance específico, necesito rellenar el token con todas las reclamaciones relacionadas con ese alcance?
¿Desde allí mi servidor de recursos comprueba si el usuario tiene la reclamación correcta?
O, ¿el servidor de recursos solo comprueba que el token tiene el alcance correcto?
De cualquier manera, no es posible asignar ámbitos a los usuarios, solo a los clientes y no es suficiente decir "el usuario que inició sesión a través del cliente x para que obtenga el permiso de escritura". Así que parece que mi primera suposición parece ser la única correcta.
Le agradecería que cualquier persona pueda aclarar cómo se deben usar los ámbitos y los reclamos para proporcionar un acceso granular a la API,
Fuentes:
[1] enlace