Il JWT aud (pubblico)
Secondo RFC 7519 :
La dichiarazione "aud" (audience) identifica i destinatari a cui è destinato il JWT. Ogni preside che intende elaborare il JWT DEVE identificarsi con un valore nell'affermazione del pubblico. Se il principale che elabora la richiesta non si identifica con un valore nella dichiarazione "aud" quando questa è presente, la JWT DEVE essere respinta. Nel caso generale, il valore "aud" è un array di stringhe sensibili al maiuscolo / minuscolo, ciascuna contenente un valore StringOrURI. Nel caso speciale in cui il JWT ha un destinatario, il valore "aud" PU essere una singola stringa con distinzione tra maiuscole e minuscole contenente un valore StringOrURI. L'interpretazione dei valori del pubblico è generalmente specifica dell'applicazione.
L'utilizzo di questa affermazione è FACOLTATIVO.
Il pubblico (aud affermazione ) come definita dalla specifica è generica ed è specifica dell'applicazione. L'utilizzo previsto è identificare i destinatari previsti del token. Ciò che un destinatario intende è specifico dell'applicazione. Un valore destinatario è un elenco di stringhe o può essere una singola stringa se è presente una sola audattestazione. Il creatore del token non impone che audsia convalidato correttamente, è responsabilità del destinatario determinare se il token deve essere utilizzato.
Qualunque sia il valore, quando un destinatario sta convalidando il JWT e desidera convalidare che il token doveva essere utilizzato per i suoi scopi, DEVE determinare quale valore si audidentifica e il token dovrebbe convalidare solo se l'ID dichiarato del destinatario è presente nel audreclamo. Non importa se si tratta di un URL o di un'altra stringa specifica dell'applicazione. Ad esempio, se il mio sistema decide di identificarsi audcon la stringa:api3.app.com allora dovrebbe accettare il JWT solo se la auddichiarazione contiene api3.app.comnel suo elenco di valori del pubblico.
Naturalmente i destinatari possono scegliere di ignorare aud , quindi questo è utile solo se un destinatario desidera una convalida positiva che il token è stato creato appositamente per esso.
La mia interpretazione basata sulla specifica è che l' audaffermazione è utile per creare JWT appositamente costruiti che sono validi solo per determinati scopi. Per un sistema questo può significare che desideri che un token sia valido per alcune funzionalità, ma non valido per altre. Potresti emettere token che sono limitati solo a un determinato "pubblico", pur utilizzando le stesse chiavi e algoritmo di convalida.
Poiché nel caso tipico un JWT viene generato da un servizio affidabile e utilizzato da altri sistemi affidabili (sistemi che non vogliono utilizzare token non validi), questi sistemi devono semplicemente coordinare i valori che useranno.
Ovviamente audè completamente opzionale e può essere ignorato se il tuo caso d'uso non lo garantisce. Se non desideri limitare l'utilizzo dei token da parte di un pubblico specifico, o nessuno dei tuoi sistemi convaliderà effettivamente il fileaud token, allora è inutile.
Esempio: token di accesso e aggiornamento
Un esempio artificioso (ma semplice) a cui posso pensare è che forse vogliamo utilizzare JWT per l'accesso e i token di aggiornamento senza dover implementare chiavi di crittografia e algoritmi separati, ma semplicemente vogliamo assicurarci che i token di accesso non vengano convalidati come token di aggiornamento o vice -versa.
Usando audpossiamo specificare una richiesta di refreshtoken di aggiornamento e una richiesta di accesstoken di accesso alla creazione di questi token. Quando viene effettuata una richiesta per ottenere un nuovo token di accesso da un token di aggiornamento, è necessario verificare che il token di aggiornamento fosse un token di aggiornamento autentico. La audconvalida come descritto sopra ci dirà se il token era effettivamente un token di aggiornamento valido cercando specificamente un'attestazione di refreshinaud .
ID client OAuth e JWT aud rivendicazione
L'ID client OAuth non è completamente correlato e non ha alcuna correlazione diretta con JWT aud attestazioni . Dal punto di vista di OAuth, i token sono oggetti opachi.
L'applicazione che accetta questi token è responsabile dell'analisi e della convalida del significato di questi token. Non vedo molto valore nello specificare l'ID client OAuth all'interno di un'attestazione JWT aud.
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.