Aller au contenu
ecdsa.com
PyJWT (Python)Bibliothèques JWT

Message d’erreur

The specified alg value is not allowed

Également affiché sous la forme

  • jwt.exceptions.InvalidAlgorithmError: The specified alg value is not allowed

PyJWT (Python) — jwt.exceptions.InvalidAlgorithmError

Ce que cela signifie

La valeur `alg` de l’en-tête du jeton ne figure pas dans la liste `algorithms` que vous avez passée à `jwt.decode()`. PyJWT contrôle ce point avant de vérifier la signature, car l’en-tête est choisi par celui qui a produit le jeton et ne doit pas décider de la manière dont il est vérifié. Le jeton est peut-être correctement signé, mais avec un algorithme que vous n’avez pas autorisé.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Lire d’abord l’en-tête

    `jwt.get_unverified_header()` affiche `alg` et `kid` sans rien considérer comme fiable. Comparez cet en-tête à votre liste d’autorisation et aux clés que publie votre émetteur.

    python
    print(jwt.get_unverified_header(token))  # {'alg': 'ES256', 'kid': '...', 'typ': 'JWT'}
  2. 2.

    Autoriser exactement l’algorithme de l’émetteur

    Placez dans `algorithms` l’algorithme qu’utilise votre émetteur, et résolvez les clés à partir de son JWKS. Pendant une migration, listez les deux algorithmes, chacun associé à sa propre clé par `kid`.

    python
    from jwt import PyJWKClient
    
    jwks = PyJWKClient("https://issuer.example.com/.well-known/jwks.json")
    signing_key = jwks.get_signing_key_from_jwt(token)
    claims = jwt.decode(
        token,
        signing_key.key,
        algorithms=["ES256"],  # the algorithm(s) your issuer actually uses, never the token's own header
        audience="https://api.example.com",
    )

Erreurs associées

Parcourir toute la base de données des erreurs de signature