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

Fehlermeldung

Not enough segments

Auch ausgegeben als

  • jwt.exceptions.DecodeError: Not enough segments

PyJWT (Python) — jwt.exceptions.DecodeError

Was der Fehler bedeutet

PyJWT konnte die Eingabe nicht in `header.payload.signature` zerlegen, weil sie weniger als zwei Punkte enthält. Der String ist kein kompaktes JWS, deshalb wurden weder Schlüssel noch Algorithmus herangezogen. Der Wert, der bei `jwt.decode()` ankommt, ist etwas anderes als ein JWT – oder ein JWT, das unterwegs sein Ende verloren hat.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Form vor dem Dekodieren prüfen

    Ein kompaktes JWS hat genau zwei Punkte. Lehne alles andere schon am Eingang deiner API mit 401 ab, damit fehlerhafte Eingaben den Decoder nie erreichen.

    python
    def bearer_token(headers: dict) -> str | None:
        scheme, _, token = headers.get("Authorization", "").partition(" ")
        if scheme.lower() != "bearer" or token.count(".") != 2:
            return None  # not a compact JWS: answer 401 instead of decoding
        return token
  2. 2.

    Opake Tokens beim Aussteller prüfen

    Stellt der Provider opake Access Tokens aus, rufe seinen Endpunkt für Token Introspection (RFC 7662) auf oder konfiguriere den Provider so, dass er für deine API JWT-Access-Tokens ausstellt (oft, indem du eine Audience anforderst).

    python
    import requests
    
    # Opaque tokens are validated by the authorization server (RFC 7662), not by decoding them.
    resp = requests.post(
        "https://issuer.example.com/oauth2/introspect",
        data={"token": token},
        auth=(CLIENT_ID, CLIENT_SECRET),
        timeout=5,
    )
    active = resp.json().get("active", False)

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen