Diferencia entre 'aud' y 'iss' en jwt

13

Quiero implementar un servicio de autenticación más robusto y jwtes una gran parte de lo que quiero hacer, y entiendo cómo escribir el código, pero tengo algunos problemas para entender la diferencia entre lo reservado issy las audnotificaciones. Entiendo que el que define el servidor que emite el token y el que se refiere a la aplicación que está destinada para su uso. Pero lo que entiendo es que mi audiencia y el emisor son lo mismo que myserver.comemitir el token para que las personas que acuden myserver.compuedan ser autorizadas y autenticadas. Supongo que no veo la diferenciación entre las dos afirmaciones, aunque sé que hay una.
Hubo un buen artículo escrito enmsdn en todos los reclamos reservados y ahí es donde me confundí más porque tenían un emisor y una audiencia completamente diferentes.

Adam McGurk
fuente
Quizás te interese JWT RFC-7519
Laiv

Respuestas:

10

Estos están destinados a escenarios en los que tiene una autoridad de emisión de tokens que no es la misma que la aplicación que es el destinatario previsto.

Esto puede no ser diferente para su aplicación.

Pero considere una aplicación a gran escala. Es posible que tenga un servidor OAuth o SSO que emita los certificados, y una aplicación que desee un token que muestre que el servidor SSO ha verificado las credenciales del usuario y ha aprobado que el usuario use la aplicación. En ese caso, es posible que tenga una ficha con "aud": "aud.example.com"y "iss": "sso.example.com".

Pablo
fuente
Oh ya veo. Fue un malentendido de mi parte porque pensé dos cosas: 1. Tenías que tener "iss" y "aud" como parte de los reclamos. 2. Tenían que ser únicos el uno para el otro. Esto obviamente no es la verdad. Entonces, si tiene una aplicación como la mía, ¿incluiría esas dos reclamaciones en su solicitud jwto las dejaría fuera, ya que serían idénticas?
Adam McGurk
Ciertamente podría dejarlos fuera y agregarlos más tarde cuando tenga una razón para usarlo
Paul
a audveces sería un tercero o no?
Andy hace
Supongo que también estoy confundido por qué los ámbitos no se utilizarían para indicar que el usuario está aprobado para una aplicación determinada.
Andy hace
Sí, audpuede ser un valor único o una matriz. Se supone que debe coincidir con cada destinatario o procesador previsto. Digamos que usted es un usuario (o aplicación) que desea llamar a api.example.com para ejecutar una consulta. Si api.example.com confía en algún servicio de autenticación de terceros (por ejemplo, Auth0) para manejar la autenticación, entonces ese servicio de autenticación debería audllenarse con 'api.example.com', y la aplicación en 'api.example.com' debería verificar que ese es el caso. Los ámbitos son más granulares que la audiencia, y también se pueden incluir en la carga útil.
Paul