Come funziona l’autenticazione JSON Web Token(JWT)?

Intestazione

L’intestazione JWT è costituita dal tipo di token e dall’algoritmo utilizzato per la firma e la codifica. Gli algoritmi possono essere HMAC, SHA256, RSA, HS256 o RS256.

{ 
"typ": "JWT",
"alg": "HS256"
}

Payload

Payload è costituito dai dati della sessione chiamati come attestazioni. Qui di seguito sono alcune delle affermazioni standard che possiamo usare,

  1. Issuer (iss)
  2. Subject (sub)
  3. Audience (aud)
  4. Expiration time (exp)
  5. Issued at (iat)
{
"sub": "user10001",
"iat": 1569302116
}

Le attestazioni personalizzate possono anche essere incluse nel set di attestazioni. Quando si utilizzano set di attestazioni personalizzati,

  • Non inserire dati di grandi dimensioni nei set di reclami. Set di rivendicazioni pensati per essere compatti.
  • Non mettere informazioni sensibili dal momento che, JWT può essere decodificato facilmente.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}

Firma

La firma è la parte più importante di un token Web JSON(JWT). La firma viene calcolata codificando l’intestazione e il payload utilizzando la codifica Base64url e concatenandoli con un separatore di periodo. Che viene poi dato all’algoritmo crittografico.

// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )

Quindi quando l’intestazione o il payload cambiano, la firma deve essere calcolata di nuovo. Solo il provider di identità(IdP) ha la chiave privata per calcolare la firma che impedisce la manomissione del token.

Come funziona?

Fondamentalmente il provider di identità(IdP) genera un JWT che certifica l’identità dell’utente e il server delle risorse decodifica e verifica l’autenticità del token utilizzando la chiave segreta salt / public.

  1. Accesso utente tramite username e password o google/facebook.
  2. Authentication server verifica le credenziali ed emette un jwt firmato utilizzando un sale segreto o una chiave privata.
  3. Il client dell’utente utilizza il JWT per accedere alle risorse protette passando il JWT nell’intestazione di autorizzazione HTTP.
  4. Resource server verifica quindi l’autenticità del token utilizzando la chiave segreta salt / public.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

More: