¿Cómo manejar la caducidad del token de usuario en trabajos asíncronos de larga ejecución?

2

¿Quiero saber cuál es el enfoque recomendado para que los servicios de back-end asíncronos que están protegidos mediante tokens de portador se llamen entre sí?

Tengo una aplicación web interactiva que llama a un servicio de back-end que pasa un token de acceso en el encabezado Authorization . Este servicio de back-end inicia un trabajo asíncrono que luego llama a otro servicio de back-end, pasando el mismo token de acceso. El problema surge cuando el token de acceso ha caducado mientras se procesaba el primer trabajo.

Parece que un enfoque relativamente sencillo sería hacer que el extremo delantero pase un token de actualización al back-end, que puede usar para obtener un nuevo token de acceso.

¿Hay mejores enfoques?

    
pregunta raghav 10.11.2016 - 07:43
fuente

1 respuesta

1

Como siempre, tiene más de una opción y la correcta depende del escenario exacto, pero, por ejemplo, podría:

  1. Admita la concesión de credenciales de cliente OAuth 2.0 en su servidor de autorización para que sus servicios de back-end puedan solicitar tokens en su propio nombre sin involucrar al usuario (fuente: Subvención de credenciales del cliente )

  2. Admitir un mecanismo de intercambio de token que permitiría una servicio de back-end para intercambiar el token de acceso recibido con otro que podría permitir llamar a otros servicios mediante la suplantación o delegación del usuario.

En el escenario 1, dado que los servicios podrían solicitar el token cuando sea necesario, la caducidad no sería un problema.

Para el escenario 2, dado que los tokens se emitieron para servicios de back-end en los que confía y nunca dejaría el límite del lado del servidor, la vida útil del token obtenido podría ser mucho mayor que la utilizada en el token de acceso disponible para la aplicación web que también resolvería su problema de caducidad.

También tenga en cuenta que el escenario 1 requeriría que sus servicios tengan la capacidad de ser llamado con un token asociado al usuario o con un token asociado al servicio, por lo que esto podría requerir cierta lógica adicional.

En relación con el enfoque del token de actualización, los tokens de actualización generalmente no se emiten para aplicaciones basadas en navegación debido a los mayores riesgos de fugas.

    
respondido por el João Angelo 18.11.2016 - 16:19
fuente

Lea otras preguntas en las etiquetas