Cómo saber qué clave secreta usar para crear y verificar JWT

0

Tenemos varios sitios web donde los usuarios tienen que iniciar sesión. Para cada sitio web, queremos admitir una solución de inicio de sesión único basada en JWT ( JSON Token web ).
También hay varios (otros) sitios web que pueden actuar como proveedores de identidad.

Cuando el usuario accede a nuestro sitio web y no está autenticado, puede elegir qué proveedor de identidad desea usar. El proveedor de identidad envía un reclamo JWT que en su forma más simple dice

 { "username": "john.doe" }

Esto es (hmac) firmado con un secreto compartido para que nuestro sitio web pueda verificar la autenticidad de la reclamación.

En mi situación, un sitio web puede admitir múltiples proveedores de identidad y un proveedor de identidad puede trabajar para múltiples sitios web. Todas las combinaciones tienen secretos compartidos únicos.

Mi pregunta es sobre cómo un proveedor de identidades puede saber qué secreto compartido usar, ya que admite múltiples sitios web. ¿Tendría sentido solicitar la identidad con https://idp1.example.com?aud=mywebsite.com , donde mywebsite.com es el sitio web que solicita identificación?

Al revés, tengo un problema similar: cuando mywebsite.com recibe un JWT, ¿cómo puede saber qué secreto usar para la verificación? ¿Tendría sentido pedirle al proveedor de identidad que incluya "iss": "idp1.example.com" , que mywebsite.com puede usar para encontrar el secreto que debe usar?

    
pregunta Jeff 30.08.2016 - 23:19
fuente

1 respuesta

1

Todos estos detalles se han resuelto en OpenID Connect . Yo sugeriría encarecidamente implementar eso (o usar una implementación existente) en lugar de inventar su propio protocolo.

    
respondido por el Neil Madden 30.08.2016 - 23:56
fuente

Lea otras preguntas en las etiquetas