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 aud
attestazione. Il creatore del token non impone che aud
sia 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 aud
identifica e il token dovrebbe convalidare solo se l'ID dichiarato del destinatario è presente nel aud
reclamo. 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 aud
con la stringa:api3.app.com
allora dovrebbe accettare il JWT solo se la aud
dichiarazione contiene api3.app.com
nel 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' aud
affermazione è 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 aud
possiamo specificare una richiesta di refresh
token di aggiornamento e una richiesta di access
token 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 aud
convalida come descritto sopra ci dirà se il token era effettivamente un token di aggiornamento valido cercando specificamente un'attestazione di refresh
inaud
.
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.