Comment fonctionne l’authentification JSON Web Token (JWT) ?

En-tête

L’en-tête JWT comprend le type de jeton et l’algorithme utilisés pour la signature et l’encodage. Les algorithmes peuvent être HMAC, SHA256, RSA, HS256 ou RS256.

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

Charge utile

La charge utile se compose des données de session appelées en tant que revendications. Voici quelques-unes des revendications standard que nous pouvons utiliser,

  1. Emetteur (iss)
  2. Sujet (sub)
  3. Public (aud)
  4. Délai d’expiration (exp)
  5. Émis à (iat)
{
"sub": "user10001",
"iat": 1569302116
}

Les revendications personnalisées peuvent également être incluses dans l’ensemble de revendications. Lors de l’utilisation d’ensembles de revendications personnalisés,

  • Ne mettez pas de données volumineuses dans des ensembles de réclamations. Les ensembles de réclamations sont conçus pour être compacts.
  • Ne mettez pas d’informations sensibles car, JWT peut être décodé facilement.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}

Signature

La signature est la partie la plus importante d’un jeton Web JSON (JWT). La signature est calculée en codant l’en-tête et la charge utile à l’aide du codage Base64url et en les concaténant avec un séparateur de période. Ce qui est ensuite donné à l’algorithme cryptographique.

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

Donc, lorsque l’en-tête ou la charge utile change, la signature doit à nouveau être calculée. Seul le fournisseur d’identité (IdP) dispose de la clé privée pour calculer la signature, ce qui empêche la falsification du jeton.

Comment ça marche ?

Fondamentalement, le fournisseur d’identité (IdP) génère un JWT certifiant l’identité de l’utilisateur et le serveur de ressources décode et vérifie l’authenticité du jeton à l’aide de la clé secrète salt / public.

  1. Connexion de l’utilisateur à l’aide d’un nom d’utilisateur et d’un mot de passe ou de google/ facebook.
  2. Le serveur d’authentification vérifie les informations d’identification et émet un jwt signé à l’aide d’un sel secret ou d’une clé privée.
  3. Le client de l’utilisateur utilise le JWT pour accéder aux ressources protégées en transmettant l’en-tête d’autorisation JWT in HTTP.
  4. Le serveur de ressources vérifie ensuite l’authenticité du jeton à l’aide de la clé secrète salt/public.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

More: