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

Fehlermeldung

Signature has expired

PyJWT (Python) — jwt.exceptions.ExpiredSignatureError

Was der Fehler bedeutet

Der Claim exp des Tokens liegt vor der aktuellen Zeit der prüfenden Seite, deshalb hat PyJWT das Token nach einer (konzeptionell) erfolgreichen Signaturprüfung abgelehnt. Die Formulierung führt etwas in die Irre – nicht die Signatur selbst läuft ab, sondern das Gültigkeitsfenster des Tokens hat sich geschlossen.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Kleine Abweichungen mit leeway abfangen

    Der Parameter leeway (in Sekunden) gilt für die Prüfungen von exp und nbf. Verwende höchstens einige Dutzend Sekunden; größere Werte verlängern die Laufzeit der Tokens unbemerkt.

    python
    import jwt
    
    payload = jwt.decode(
        token, key,
        algorithms=["ES256"],
        leeway=30,   # seconds of tolerated clock skew
    )
  2. 2.

    Tatsächliche Zeitstempel untersuchen

    Lies die Claims ohne Prüfung aus und vergleiche exp mit der Uhr des Hosts – an der Größe der Differenz erkennst du, ob es sich um einen Ablauf, eine Uhrenabweichung oder einen Fehler beim Ausstellen handelt.

    python
    import jwt, time
    claims = jwt.decode(token, options={"verify_signature": False})
    print("exp:", claims["exp"], "now:", int(time.time()),
          "delta:", int(time.time()) - claims["exp"], "s")

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen