Différence entre 'aud' et 'iss' en jwt

13

Je veux implémenter un service d'authentification plus robuste et jwtc'est une grande partie de ce que je veux faire, et je comprends comment écrire le code, mais j'ai un peu de mal à comprendre la différence entre le réservé isset les audrevendications. Je comprends que l'un définit le serveur qui émet le jeton et que l'autre fait référence à l'application qui est destinée à être utilisée. Mais la façon dont je comprends cela, c'est que mon public et l'émetteur sont la même chose, myserver.comc'est émettre le jeton afin que les personnes qui viennent myserver.compeuvent être autorisées et authentifiées. Je suppose que je ne vois pas la différence entre les deux revendications, même si je sais qu'il y en a une.
Il y avait un bon article écrit àmsdn sur toutes les revendications réservées et c'est là que je me suis le plus trompé car leur émetteur et leur public étaient complètement différents.

Adam McGurk
la source
Vous pourriez être intéressé JWT RFC-7519
Laiv

Réponses:

10

Celles-ci sont destinées aux scénarios dans lesquels vous disposez d'une autorité d'émission de jetons qui n'est pas la même que l'application qui est le destinataire prévu.

Cela peut ne pas être différent pour votre application.

Mais considérez une application à grande échelle. Vous pouvez avoir un serveur OAuth ou SSO qui émet les certificats et une application qui veut un jeton qui montre que le serveur SSO a vérifié les informations d'identification de l'utilisateur et a approuvé l'utilisateur pour utiliser l'application. Dans ce cas, vous pourriez avoir un jeton avec "aud": "aud.example.com"et "iss": "sso.example.com".

Paul
la source
Oh je vois. C'était un malentendu de ma part parce que je pensais à deux choses: 1. Vous deviez avoir à la fois «iss» et «aud» dans les réclamations. 2. Ils devaient être uniques les uns aux autres. Ce n'est évidemment pas la vérité. Donc, si vous avez une application comme la mienne, incluriez-vous même ces deux revendications dans votre jwtou les laisseriez-vous de côté car elles seraient identiques?
Adam McGurk
Vous pouvez certainement les laisser de côté et les ajouter plus tard lorsque vous avez une raison de l'utiliser
Paul
serait audparfois un tiers ou non?
Andy
Je suppose que je ne comprends pas non plus pourquoi les étendues ne seraient pas utilisées pour indiquer que l'utilisateur est approuvé pour une application donnée.
Andy
Oui, audpeut être une valeur unique ou un tableau. Il est censé correspondre à chaque destinataire ou processeur prévu. Supposons que vous soyez un utilisateur (ou une application) qui souhaite appeler api.example.com pour exécuter une requête. Si api.example.com fait confiance à un service d'authentification tiers (par exemple, Auth0) pour gérer l'authentification, alors ce service d'authentification doit être audrempli avec «api.example.com», et l'application «api.example.com» doit vérifier que c'est bien le Cas. Les étendues sont plus granulaires que l'audience et peuvent également être incluses dans la charge utile.
Paul