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.

Example:  

{

"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).

Example:  

{

"email":"jde@company.com",

"exp": 1472034208

}

Example:  

{

"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.

  1. Viene generato un token JWT che include una serie di attestazioni, firmato con la chiave privata per il certificato configurato.

  2. Viene inviata una richiesta al proxy che include il token JWT firmato nell'intestazione dell'autorizzazione HTTP.

  3. Il proxy inserisce i mapping degli attributi configurati e inoltra la chiamata al servizio back-end.

  4. Il client riceverà una sessione e non è necessario che le chiamate successive includano un token JWT.

    1. Se le chiamate includono un token JWT, questo verrà convalidato e, se non è valido, all'utente non sarà consentito l'accesso.
    2. 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.
Nota: Nel token JWT possono essere configurati altri campi, ma Qlik NPrinting considera solo quelli sopra indicati.

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