Passer au contenu principal
Tous les émis par Auth0 utilisent des signatures Web JSON (JWS), ce qui signifie qu’ils sont signés plutôt que chiffrés. Un JWS représente du contenu protégé par des ou des codes d’authentification de message (MAC), au moyen de structures de données basées sur JSON. Un JWT bien formé se compose de trois chaînes concaténées encodées en Base64url, séparées par des points (.) :
  • En-tête JOSE : contient des métadonnées sur le type de jeton et les algorithmes cryptographiques utilisés pour en protéger le contenu.
  • Charge utile JWS (ensemble de revendications) : contient des informations de sécurité vérifiables, comme l’identité de l’utilisateur et les autorisations qui lui sont accordées.
  • Signature JWS : sert à valider que le jeton est fiable et n’a pas été modifié. Lorsque vous utilisez un JWT, vous devez vérifier sa signature avant de le stocker et de l’utiliser.
Un JWT ressemble généralement à ceci :
jeton Web JSON
Pour voir par vous-même ce que contient un JWT, utilisez le débogueur JWT.io. Il vous permet de vérifier rapidement qu’un JWT est bien formé et d’inspecter manuellement les valeurs des différentes revendications.
Débogueur JWT

En-tête JOSE

Objet JSON contenant les paramètres décrivant les opérations cryptographiques et les paramètres employés. L’en-tête JOSE (JSON Object Signing and Encryption) est composé d’un ensemble de paramètres d’en-tête, généralement sous forme de paires nom-valeur : l’algorithme de hachage utilisé (p. ex., HMAC SHA256 ou RSA) et le type de JWT.
{
      "alg": "HS256",
      "typ": "JWT"
    }

Charge utile JWS

La charge utile contient des énoncés sur l’entité (généralement l’utilisateur), ainsi que des attributs supplémentaires de cette entité, appelés revendications. Dans cet exemple, notre entité est un utilisateur.
{
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
    }
Lorsque vous travaillez avec des revendications JWT, vous devriez connaître les différents types de revendications et les règles de nomenclature.

Signature JWS

La signature sert à vérifier que l’expéditeur du JWT est bien celui qu’il prétend être et à s’assurer que le message n’a pas été modifié en cours de route. Pour créer la signature, on prend l’en-tête et la charge utile encodés en Base64, ainsi qu’un secret, puis on les signe à l’aide de l’algorithme indiqué dans l’en-tête. Par exemple, si vous créez une signature pour un jeton à l’aide de l’algorithme HMAC SHA256, vous devez faire ce qui suit :
HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)

En savoir plus