Differenza tra 'aud' e 'iss' in jwt


13

Voglio implementare un servizio di autenticazione più solido ed jwtè una grande parte di ciò che voglio fare, e capisco come scrivere il codice, ma ho qualche problema a capire la differenza tra il riservato isse il audreclamo. Comprendo che quello definisce il server che sta emettendo il token e quello si riferisce all'applicazione che è destinata all'uso. Ma il modo in cui lo capisco è che il mio pubblico ed emittente sono la stessa cosa myserver.comsta emettendo il token in modo che le persone che arrivano myserver.compossano essere autorizzate e autenticate. Immagino di non vedere la differenziazione tra le due affermazioni, anche se so che ce n'è una.
C'era un buon articolo scritto sumsdn su tutti i reclami riservati ed è qui che mi sono confuso di più perché avevano l'emittente e il pubblico completamente diversi.


Potresti essere interessato JWT RFC-7519
Laiv

Risposte:


10

Questi sono destinati a scenari in cui si dispone di un'autorità di emissione di token che non è la stessa dell'applicazione che è il destinatario previsto.

Questo potrebbe non essere diverso per la tua applicazione.

Ma considera un'applicazione su larga scala. Potresti avere un server OAuth o SSO che emette i certificati e un'applicazione che desidera un token che mostri il server SSO ha verificato le credenziali dell'utente e ha approvato l'utente per utilizzare l'applicazione. In tal caso, potresti avere un token con "aud": "aud.example.com"e "iss": "sso.example.com".


Oh, capisco. È stato un malinteso da parte mia perché ho pensato a due cose: 1. Dovevi avere sia "iss" che "aud" come parte delle affermazioni. 2. Dovevano essere unici l'uno con l'altro. Questa ovviamente non è la verità. Quindi, se hai una domanda come la mia, includeresti anche queste due affermazioni jwto le lasceresti fuori dal momento che sarebbero identiche?
Adam McGurk,

Potresti certamente lasciarli fuori e aggiungerli in seguito quando hai un motivo per usarlo
Paul,

a audvolte sarebbe una terza parte o no?
Andy,

Immagino di essere anche confuso sul perché gli ambiti non vengano utilizzati per indicare che l'utente è approvato per una determinata applicazione.
Andy,

Sì, audpuò essere un singolo valore o un array. Dovrebbe corrispondere a ciascun destinatario o processore previsto. Supponiamo che tu sia un utente (o un'applicazione) che desidera chiamare api.example.com per eseguire una query. Se api.example.com trust qualche terza parte del servizio di autenticazione (ad esempio Auth0) per l'autenticazione manico, allora che auth servizio dovrebbe compilare audcon 'api.example.com', e l'applicazione al 'api.example.com' dovrebbe verificare che è il Astuccio. Gli ambiti sono più granulari del pubblico e possono essere inclusi anche nel payload.
Paolo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.