Compartir la clave pública RSA para descifrar JWT entre servidores de carga equilibrada

2

Estoy intentando implementar un mecanismo de autenticación sin cookies para una API web que no tiene estado en el servidor (no almacena tokens de sesión) y se puede equilibrar la carga en varios servidores.

He implementado un JWT que se devuelve a un cliente (cliente de phonegap móvil) que se almacena en sessionStorage, y se agrega al encabezado de las solicitudes posteriores a la autenticación. Si bien esto funciona perfectamente bien en un solo servidor, siempre quiero tener un servidor en espera que pueda manejar las solicitudes que inicialmente se autenticaron en un servidor diferente. Para esto, asumo que tendré que compartir claves entre los diferentes servidores.

No entiendo las implicaciones de seguridad de mover claves públicas o privadas entre servidores. ¿Es completamente desaconsejable? Si es así, ¿cómo puedo cumplir mis requisitos? Si no, ¿hay métodos estándar para compartir claves? Por ejemplo, un servicio de configuración distribuido como etcd? ¿Transferencias manuales de ssh? ¿Es más recomendable tener un único servidor que maneje la autenticación y luego compartir las claves públicas entre los servidores para descifrar el token de las llamadas al resto de la API?

    
pregunta dannytoone 13.10.2014 - 21:27
fuente

1 respuesta

3

Si no desea compartir claves Y usa claves asimétricas, puede ingresar cada servidor por separado y hacer que cada servidor establezca una reclamación iss (emisor) diferente. Luego, el destinatario del JWT puede "buscar" la clave pública adecuada en función de la reclamación iss . Nuestra búsqueda fue básicamente un archivo de configuración que asignó el valor iss a una ubicación del sistema de archivos de la clave pública.

Si necesitas compartir claves secretas, entonces vería técnicas de distribución de claves. Mucho dependerá de cuánto esfuerzo quieras poner.

    
respondido por el Patrick 13.10.2014 - 23:57
fuente

Lea otras preguntas en las etiquetas