Token Web JSON (JWT)

I token web JSON (JWT) sono uno standard aperto, definito nella specifica JSON Web Token (JWT) RFC 7519. Rappresentano in modo sicuro le rivendicazioni tra due parti. Le attestazioni possono essere correlate a qualsiasi processo aziendale, ma in genere vengono utilizzate per rappresentare un'identità e le relative associazioni. Ad esempio, un utente la cui identità rappresenta JWT appartiene a un ruolo o gruppo di amministratore.

Per un'introduzione a JWT, vedere JWT (RFC 7519).

Le attestazioni in un JWT sono codificate come oggetto JSON e normalmente sono firmate digitalmente con un codice di autenticazione del messaggio (MAC). Lo scenario più comune per l'utilizzo di un JWT è l'autenticazione. Quando l'utente ha effettuato l'accesso, ogni richiesta successiva include il JWT, che consente all'utente di accedere ai servizi consentiti da quel token.

Per vedere qualeCICS® i metodi di accesso supportano JWT, vedere Quale metodo di autenticazione posso utilizzare con quale metodo di accesso? .

Perché usare JWT?

I vantaggi dell'utilizzo dei JWT includono quanto segue:
  • Sono leggeri e facili da usare da parte delle applicazioni client: ad esempio, le applicazioni mobili.
  • Sono autonomi, il che significa che il server Liberty JVM può consumare direttamente il token e utilizzare un'attestazione del token come identità per eseguire la richiesta.
  • Possono essere firmati simmetricamente da un segreto condiviso utilizzando l'algoritmo HMAC o asimmetricamente utilizzando una chiave privata.
  • Hanno un meccanismo di scadenza integrato.
  • Possono essere estesi per contenere attestazioni personalizzate.
  • Sono ampiamente adottati da diverse soluzioni Single Sign-On e standard noti, come Come funziona:OpenID Collegare .

Anatomia di un JWT

Figura 1 mostra che un JWT è composto da tre parti: un'intestazione, un carico utile e una firma.
Intestazione
L'intestazione è generalmente composta da due parti: il tipo di token, che è JWT, e l'algoritmo utilizzato, come HMACSHA256 o RSASHA256 . ÈBase64Url codificato per formare la prima parte del JWT.
Payload
Il payload contiene le attestazioni. Esiste una serie di rivendicazioni registrate, ad esempio,iss (emittente),exp (data di scadenza),sub (oggetto) eaud (pubblico). Queste attestazioni non sono obbligatorie ma consigliate per fornire una serie di attestazioni utili e interoperabili. Il payload può anche includere attributi aggiuntivi che definiscono le richieste personalizzate, come il ruolo del dipendente. In genere, l'attestazione dell'oggetto viene utilizzata per creare il fileOpenID Connetti l'oggetto dell'utente. Tuttavia, il server Liberty JVM può essere configurato per utilizzare un'attestazione alternativa. Il carico utile èBase64Url codificato per formare la seconda parte del JWT.
Firma
Per creare la parte della firma, l'intestazione codificata e il payload codificato vengono firmati utilizzando l'algoritmo di firma dell'intestazione. La firma viene utilizzata per verificare che l'emittente del JWT sia chi dice di essere e per garantire che il messaggio non sia stato modificato lungo il percorso.
Figura 1. Anatomia di un JWT
Anatomia di un JWT
figura 2 mostra un tipico flusso di autenticazione JWT.
  1. L'utente accede utilizzando le credenziali.
  2. Quando l'utente viene autenticato, viene creato un JWT e restituito all'utente.
  3. Quando l'utente vuole accedere a una risorsa protetta, l'applicazione client invia il JWT, in genere nell'intestazione HTTP Authorization.
  4. Il JWT viene quindi utilizzato dal server delle applicazioni, ad esempioCICS , per identificare l'utente e consentire l'accesso alla risorsa.
Figura 2. Flusso di autenticazione JWT
Flusso di autenticazione JWT

Supporto per JWT inCICS Libertà

Un JWT può essere utilizzato per la propagazione dell'identità conCICS Libertà. Se l'attestazione dell'oggetto contiene un'identità distribuita, è possibile configurareCICS Libertà di mappare l'identità distribuita su aRACF® ID utente. È possibile configurare l'autenticazione JWT con un server Liberty JVM in diversi modi, i più comuni dei quali includono:
  • OpenID Funzionalità Connect Client (OIDC).

    CICS La libertà sostieneOpenID Collegare1.0 . Puoi usare ilopenidConnectClient-1.0 funzionalità per configurare un server Liberty JVM per accettare un JWT come token di autenticazione. Per ulteriori informazioni, vedere Come funziona:OpenID Collegare .

  • Funzionalità JWT

    La Libertàjwt-1.0 La funzionalità fornisce una serie di API che puoi utilizzare per lavorare con i JWT. È possibile utilizzare la funzionalità per creare o utilizzare un JWT.

  • Impresa Java Security API

    Enterprise Java™ Security API è un'API per i fornitori di servizi standard di Enterprise Java che consente l'implementazione di meccanismi di autenticazione e di identity store nelle applicazioni web Enterprise Java. È possibile sviluppare un meccanismo di autenticazione HTTP personalizzato che autentichi una richiesta che utilizza un JWT.

  • JASPIC (Java Authentication Service Provider Interface for Containers)

    JASPIC è un'API del fornitore di servizi standard Enterprise Java che consente l'implementazione di meccanismi di autenticazione nelle applicazioni Web Enterprise Java. È possibile sviluppare un provider di autenticazione JASPIC personalizzato che autentica una richiesta che utilizza un JWT.

  • Interceptor dell'associazione fiduciaria (TAI)

    Un Trust Association Interceptor (TAI) è unWebSphere® API proprietaria del fornitore di servizi che consente l'integrazione di servizi di sicurezza di terze parti. È possibile implementare un TAI che ispeziona le richieste HTTP per un token di sicurezza specifico, ad esempio un JWT, e lo convalida. Il server CICS Liberty deve essere configurato per utilizzare il TAI implementato.

Consigliato: Quando si utilizzano JWT non crittografati, si consiglia vivamente di utilizzare HTTPS per trasportare le richieste che contengono un JWT.

Supporto per JWT inCICS

CICS supporta solo JWT creati daRACF . Con questa funzionalità, puoi convertire le credenziali di autenticazione di base di un utente in un JWT che viene quindi utilizzato come token di sessione sicura limitato nel tempo. Puoi convalidare questo token sicuro nelle richieste successive utilizzando il fileCICS comando API,VERIFY TOKEN . Questo supporto può essere utilizzato anche per convertire un token MFA in un JWT per supportare l'uso dei token MFA su richieste senza stato che memorizzano nella cache le credenziali. Password, passphrase, token MFA ePassTickets sono tutte credenziali supportate.

Se si desidera che le richieste HTTPS o SOAP accettino un JWT creato da RACF, è necessario scrivere intestazioni personalizzate.

Il diagramma seguente mostra uno scenario in cui le credenziali di autenticazione di base vengono convertite in un JWT per le richieste successive, doveuser è l'ID utente epw è la parola d'ordine.

Figura 3 Conversione delle credenziali di autenticazione di base in un JWT
Questo diagramma mostra un caso d'uso di JWT, in cui vengono utilizzate le credenziali di autenticazione di base per la prima richiesta. Nelle richieste successive viene utilizzato un JWT convertito dalle credenziali di autenticazione di base.