La audrevendication JWT (Audience)
Selon RFC 7519 :
La revendication "aud" (audience) identifie les destinataires auxquels le JWT est destiné. Chaque mandant destiné à traiter le JWT DOIT s'identifier avec une valeur dans la revendication d'audience. Si le principal traitant la réclamation ne s'identifie pas avec une valeur dans la réclamation "aud" lorsque cette réclamation est présente, alors le JWT DOIT être rejeté. Dans le cas général, la valeur "aud" est un tableau de chaînes sensibles à la casse, chacune contenant une valeur StringOrURI. Dans le cas particulier où le JWT a un public, la valeur "aud" PEUT être une seule chaîne sensible à la casse contenant une valeur StringOrURI. L'interprétation des valeurs d'audience est généralement spécifique à l'application.
L'utilisation de cette allégation est FACULTATIVE.
La audrevendication Audience ( ) telle que définie par la spécification est générique et spécifique à l'application. L'utilisation prévue est d'identifier les destinataires prévus du jeton. Ce que signifie un destinataire est spécifique à l'application. Une valeur d'audience est soit une liste de chaînes, soit une seule chaîne s'il n'y a qu'une seule audrevendication. Le créateur du jeton n'applique pas ce qui audest validé correctement, il incombe au destinataire de déterminer si le jeton doit être utilisé.
Quelle que soit la valeur, lorsqu'un destinataire valide le JWT et qu'il souhaite valider que le jeton était destiné à être utilisé à ses fins, il DOIT déterminer quelle valeur auds'identifie, et le jeton ne doit valider que si l'ID déclaré du destinataire est présent dans la audréclamation. Peu importe s'il s'agit d'une URL ou d'une autre chaîne spécifique à une application. Par exemple, si mon système décide de s'identifier audavec la chaîne: api3.app.comil ne doit accepter le JWT que si la audrevendication contient api3.app.comdans sa liste des valeurs d'audience.
Bien sûr, les destinataires peuvent choisir de ne pas tenir compte aud, donc cela n'est utile que si un destinataire souhaite une validation positive que le jeton a été créé spécifiquement pour lui.
Mon interprétation basée sur la spécification est que la audrevendication est utile pour créer des JWT spécialement conçus qui ne sont valables qu'à certaines fins. Pour un système, cela peut signifier que vous souhaitez qu'un jeton soit valide pour certaines fonctionnalités, mais non valide pour d'autres. Vous pouvez émettre des jetons qui sont limités à un certain "public", tout en utilisant les mêmes clés et algorithme de validation.
Étant donné que dans le cas typique, un JWT est généré par un service de confiance et utilisé par d'autres systèmes de confiance (systèmes qui ne veulent pas utiliser de jetons non valides), ces systèmes doivent simplement coordonner les valeurs qu'ils utiliseront.
Bien sûr, audc'est complètement facultatif et peut être ignoré si votre cas d'utilisation ne le justifie pas. Si vous ne souhaitez pas restreindre l'utilisation des jetons par des publics spécifiques, ou qu'aucun de vos systèmes ne validera réellement le audjeton, alors il est inutile.
Exemple: jetons d'accès et de rafraîchissement
Un exemple artificiel (mais simple) auquel je peux penser est peut-être que nous voulons utiliser des JWT pour les jetons d'accès et d'actualisation sans avoir à implémenter des clés de chiffrement et des algorithmes séparés, mais que nous voulons simplement nous assurer que les jetons d'accès ne seront pas validés en tant que jetons d'actualisation, ou vice-versa. -versa.
En utilisant, audnous pouvons spécifier une revendication de refreshpour les jetons d'actualisation et une réclamation de accesspour les jetons d'accès lors de la création de ces jetons. Lorsqu'une demande est faite pour obtenir un nouveau jeton d'accès à partir d'un jeton d'actualisation, nous devons valider que le jeton d'actualisation était un véritable jeton d'actualisation. La audvalidation décrite ci-dessus nous dira si le jeton était réellement un jeton d'actualisation valide en recherchant spécifiquement une revendication de refreshin aud.
ID client OAuth et audrevendication JWT
L'ID client OAuth est totalement indépendant et n'a aucune corrélation directe avec les audrevendications JWT . Du point de vue d'OAuth, les jetons sont des objets opaques.
L'application qui accepte ces jetons est responsable de l'analyse et de la validation de la signification de ces jetons. Je ne vois pas beaucoup d'intérêt à spécifier l'ID client OAuth dans une audrevendication JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.