¿Es razonable almacenar la clave secreta HMAC solo en la memoria?

0

Estoy creando una aplicación web que usa Spring Boot para el backend y Angular para el frontend y planeo usar JWT firmados con HMAC-SHA256 para autenticación / autorización.

He estado pensando en cuál sería el mejor lugar para almacenar la clave secreta y se me ocurrió la idea de que simplemente generaría una clave aleatoria al iniciar el servidor (y no lo mantendría en ningún lugar) y úsalo para generar / verificar los tokens.

Creo que este enfoque sería bastante simple de implementar y más seguro que la clave persistente.

El único inconveniente que veo es que los tokens emitidos serían inválidos en los reinicios del servidor.

Realmente no he visto esto en ninguna parte, así que no estoy seguro de si es una idea estúpida o no.

Cualquier apreciación sería apreciada.

    
pregunta justanoob 23.12.2018 - 20:54
fuente

2 respuestas

0

Entiendo por qué querría rotar su clave secreta durante un reinicio del servidor. Pero, creo que se puede lograr lo mismo administrando el tiempo de caducidad de los tokens emitidos. Además, mejoraría la experiencia del usuario, ya que los usuarios no tendrán que autenticarse cada vez que reinicies el servidor.

    
respondido por el Electro 26.12.2018 - 16:08
fuente
0

Si su aplicación es tal que puede usar tokens de corta duración (30 minutos o menos), los reinicios del servidor probablemente no serán un gran problema para la mayoría de sus clientes.

Donde se vuelve más problemático es si necesita escalar horizontalmente su servidor. Piense en el futuro, donde ha tenido éxito y necesita escalar, es decir, usar un sistema como Spinnaker con Kubernetes para activar dinámicamente servidores adicionales. Si no conserva sus tokens para que puedan compartirse en todos sus servidores, sus clientes de alguna manera deberán estar vinculados a su servidor de origen (tal vez mediante el uso de "sesiones adhesivas" en su equilibrador de carga). persistir en los tokens emitidos (no en las claves secretas, solo en los tokens en sí), pero luego debe asegurarse de que solo sus servidores genuinos puedan agregar tokens a su caché. Eso también requiere validación.

No importa qué, habrá complejidades adicionales si aumenta la escala. Siempre hay más que considerar.

    
respondido por el John Deters 26.12.2018 - 17:47
fuente

Lea otras preguntas en las etiquetas