Autenticazione JWT
JSON Web Token (JWT) è uno standard aperto per la trasmissione sicura di informazioni tra due parti come oggetto JSON (JavaScript Object Notation).
JWT verifica che le credenziali del servizio siano autentiche e consente al servizio di agire per conto di qualsiasi utente, ignorando l'autenticazione delle credenziali utente. Poiché JWT abilita il single sign-on (SSO), riduce al minimo il numero di accessi che un utente deve effettuare a siti Web e applicazioni cloud.
Struttura del token JWT
Un token JWT è costituito da tre parti: intestazione, payload e firma.
Intestazione
L'intestazione è generalmente costituita da due parti: tipo (typ) e algoritmo (alg). L'algoritmo è utilizzato per generare la firma.
Esempio:
{
"typ": "JWT",
"alg": "RS256"
}
RS256 indica che per firmare questo token è utilizzata la firma RS256 - RSA con SHA256.
Payload
Il payload è un oggetto JSON costituito dalle attestazioni che si intende specificare. Le attestazioni sono affermazioni su un'entità (in genere l'utente), accompagnate da metadati. È necessario definire l'attributo email, oppure gli attributi domain (dominio) e name (nome).
Esempio:
{
"email":"jde@company.com",
"exp": 1472034208
}
Esempio:
{
"name":"jde",
"domain":"company",
"exp": 1472034208
}
Firma
La firma è utilizzata per verificare l'identità del mittente JWT e per accertarsi che il messaggio non sia stato manomesso. La firma è costituita dall'intestazione e dal payload crittografati e firmati con una chiave segreta. Normalmente sono utilizzati certificati X.509 per generare e convalidare la firma.
L'autenticazione viene eseguita verificando la firma. Se la firma è valida, viene accordato l'accesso.
Algoritmi di firma supportati
In Qlik NPrinting sono supportate le firme seguenti:
-
firma RS256 - RSA con SHA256
-
firma RS384 - RSA con SHA384
-
firma RS512 - RSA con SHA512
Esempio: Accesso a Qlik NPrinting con un token JWT firmato
L'esempio seguente mostra i passaggi per ottenere l'accesso mediante un token JWT firmato.
-
Viene generato un token JWT che include una serie di attestazioni, firmato con la chiave privata per il certificato configurato.
-
Viene inviata una richiesta al proxy che include il token JWT firmato nell'intestazione dell'autorizzazione HTTP.
-
Il proxy inserisce i mapping degli attributi configurati e inoltra la chiamata al servizio back-end.
-
Il client riceverà una sessione e non è necessario che le chiamate successive includano un token JWT.
- Se le chiamate includono un token JWT, questo verrà convalidato e, se non è valido, all'utente non sarà consentito l'accesso.
-
Se l'utente specificato nel token JWT è diverso dall'utente memorizzato per la sessione, l'utente otterrà una nuova sessione.
Campi standard
Qlik NPrinting utilizza i campi seguenti in un'attestazione JWT:
- Expiration time (exp): specifica il tempo massimo dopo il quale il token JWT non è accettato.
- Not before (nbf): specifica il momento dal quale il token JWT è accettato.
Limitazioni
Si applicano le limitazioni seguenti:
-
I token JWT crittografati non sono supportati.
-
Sono supportati solo gli algoritmi di firma seguenti:
-
firma RS256 - RSA con SHA256
-
firma RS384 - RSA con SHA384
-
firma RS512 - RSA con SHA512
-