¿Debería un token de acceso reflejar los roles de usuario actuales?

2

Un usuario con rol "A" solicita un token de acceso en el momento t , que expira en 12 horas; después de 6 horas, el rol "B" se otorga al usuario además del rol "A".

¿Debería el token otorgar el rol de usuario "B", incluso si el rol no se otorgó en el momento en que se solicitó el token?

ACTUALIZACIÓN Como Mike Scott notó en su respuesta, el cambio en los roles de los usuarios debería tener efecto inmediatamente. Me gustaría que mi pregunta sea más específica: cuando cambian los roles de los usuarios, ¿deberían los tokens activos reflejar el cambio que otorga los roles actualizados en caso de que sean invalidados / revocados?

En otras palabras: ¿deberían ser inmutables las autoridades otorgadas por un token?

    
pregunta Giovanni Lovato 09.10.2017 - 14:17
fuente

3 respuestas

2

No hay necesariamente una respuesta correcta a la pregunta. Es realmente fácil decir "por supuesto que deberían" y algo más difícil para que esto suceda.

Dado que establece un token con notificaciones en lugar de solo un identificador, se supone que no desea contactar con el servidor de autorización cada vez que se recibe el token. Esto significa que debe respetar la validez / caducidad del token.

Si no le importa ponerse en contacto con el servidor de autorización con cada solicitud, no necesita configurar las reclamaciones en el token, puede obtenerlas del servidor cada vez y siempre estarán actualizadas.

OAuth se usa generalmente entre varias partes y usted puede controlar entre 1 y todas ellas. La cantidad que usted controla puede afectar lo que puede y no puede hacer. La revocación de token no es posible sin una solicitud adicional al servidor de autenticación

    
respondido por el ste-fu 09.10.2017 - 19:31
fuente
1

Haga la pregunta al revés, y la respuesta es obvia. Si el usuario tiene el rol B revocado mientras su token está activo, el acceso debe ser revocado inmediatamente. Por lo tanto, también puede hacer que todos los cambios de acceso surtan efecto inmediatamente.

    
respondido por el Mike Scott 09.10.2017 - 14:42
fuente
0

Un token es para autenticación, no para autorización. Un token no debe contener más información que la necesaria para verificar la autenticidad. Un token en sí mismo no hace nada, generalmente está emparejado con una cuenta, rol o recurso. Entonces:

El token T para el usuario A con rol R debe otorgar específicamente autenticidad al portador para actuar como usuario A, o como usuario A en combinación con el rol R.

En el caso de tu escenario:

  • si el token T es válido para el usuario A, los roles asignados en el momento del uso del token T estarán disponibles para el portador, independientemente del estado en el momento en que se emitió el token

  • si el token T es válido para el usuario A en combinación con el rol R, en el momento en que se usa el token, la autenticación solo tendrá éxito si el usuario A aún tiene el rol R asignado

Puede mejorar la velocidad de autorización revocando todos los tokens en los eventos de mutación del usuario si es conveniente.

Para tokens independientes o sin conexión, esto no funciona, pero, de nuevo, los tokens no serían efectivos en ese caso, ya que no se pueden revocar.

    
respondido por el John Keates 14.10.2017 - 05:11
fuente

Lea otras preguntas en las etiquetas