¿Cómo realizan los servicios en segundo plano la autenticación de API basada en token?

1

Estoy implementando la autenticación basada en token JWT para nuestro WebAPI para restringir el acceso a los datos a través de la API (por ejemplo, el cliente envía un nombre de usuario / contraseña y la api proporciona un token jwt válido por x horas). Actualmente tenemos procesos en segundo plano recurrentes que necesitan acceder a esos datos. ¿Cuál es la mejor práctica relacionada con este escenario?

Leí en alguna parte que, dado que el servicio es un tipo de cliente confidencial, podemos almacenar la credencial en un código similar a la clave de acceso / secreto. No me gusta configurar o codificar las contraseñas, pero este parece ser el enfoque válido para el caso de uso.

NOTA: esta pregunta se ha sugerido como duplicado de dónde almacenar las claves privadas, pero el quid de la pregunta es más ideas sobre qué enfoque es mejor para la autenticación relacionada con los servicios en segundo plano.

    
pregunta MichaelChan 22.09.2017 - 03:36
fuente

1 respuesta

1

La mejor solución dependerá mucho de lo que almacene en su token.

Si almacena información confidencial en su token, deberá cifrarla y usar un token JWE . En este caso, no tendrá más remedio que almacenar una clave privada en algún lugar tu servicio puede acceder a él.

Pero en la mayoría de los casos, su punto final de API no necesita un token cifrado: todo lo que necesita es uno firmado para que pueda verificar que los datos en el token son válidos y, por lo tanto, puede usar un token JWS en su lugar.

En este caso, tiene 2 opciones nuevamente: usar un token basado en HMAC (en cuyo caso deberá almacenar esa clave HMAC de manera segura) o usar un algoritmo asimétrico en su lugar (basado en RSA o EC). En ese caso posterior, todo lo que necesitará su servicio de API es la clave pública que coincida con la firma: necesita que la clave se almacene en su servidor de manera que sea difícil cambiar la clave pero NO necesita la Clave para ser secreto.

    
respondido por el Stephane 25.09.2017 - 09:42
fuente

Lea otras preguntas en las etiquetas