Zum Inhalt springen
ecdsa.com
PyJWT (Python)JWT-Bibliotheken

Fehlermeldung

It is required that you pass in a value for the "algorithms" argument when calling decode().

PyJWT (Python) — jwt.exceptions.DecodeError

Was der Fehler bedeutet

Seit PyJWT 2.0 verweigert jwt.decode() die Ausführung ohne explizite Liste algorithms. Das ist keine Pedanterie: Den Algorithmus aus dem Header des Tokens selbst abzuleiten, ermöglicht Algorithm-Confusion-Angriffe (etwa die Prüfung eines HS256-Tokens mit einem öffentlichen RSA-Schlüssel als HMAC-Secret). Die prüfende Seite – serverseitig konfiguriert, außerhalb der Reichweite eines Angreifers – muss festlegen, was sie akzeptiert, und PyJWT erzwingt diesen Vertrag auf API-Ebene, sodass sich der unsichere Aufruf schlicht nicht schreiben lässt.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Algorithmus explizit angeben

    Übergib genau den oder die Algorithmen, die dein Aussteller verwendet – bei mit ECDSA signierten Tokens typischerweise ES256. Laufen mehrere Arten von Tokens durch einen Dienst, gib jedem Aussteller seine eigene Allowlist, statt alle zu einer großzügigen Liste zusammenzuführen.

    python
    import jwt
    
    payload = jwt.decode(
        token,
        public_key_pem,
        algorithms=["ES256"],       # required — and a security control, not boilerplate
        audience="api://orders",
    )
  2. 2.

    Untersuchung ohne Prüfung ausdrücklich anfordern

    Musst du nur Claims lesen (Debugging, Logging), schalte die Prüfung bewusst ab – und lass das Ergebnis niemals in Autorisierungsentscheidungen einfließen.

    python
    claims = jwt.decode(token, options={"verify_signature": False})
    # or just the header:
    header = jwt.get_unverified_header(token)

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen