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

Fehlermeldung

Audience doesn't match

Auch ausgegeben als

  • jwt.exceptions.InvalidAudienceError: Audience doesn't match

PyJWT (Python) — jwt.exceptions.InvalidAudienceError

Was der Fehler bedeutet

Das Token hat einen Claim `aud`, und du hast `jwt.decode()` den Parameter `audience=` übergeben, aber kein Wert stimmt überein. PyJWT akzeptiert das Token, wenn mindestens eine Audience des Tokens einer der von dir erlaubten Audiences entspricht; hier war das bei keiner der Fall. Die Signatur war gültig – das Token wurde für einen anderen Empfänger ausgestellt.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    aud des Tokens mit deiner Audience vergleichen

    Dekodiere ohne Prüfung nur zum Ansehen und prüfe dann mit dem exakten Bezeichner. Wurde das Token für die falsche Audience ausgestellt, ändere die Token-Anfrage des Clients; war der Bezeichner falsch geschrieben, ändere die prüfende Seite.

    python
    unverified = jwt.decode(token, options={"verify_signature": False})
    print(repr(unverified.get("aud")))  # str or list[str]
    
    claims = jwt.decode(
        token,
        signing_key,
        algorithms=["ES256"],
        audience="https://api.example.com/orders",  # must equal one of the token's aud values
        issuer="https://issuer.example.com/",
    )
  2. 2.

    Mehrere Bezeichner explizit zulassen

    `audience` akzeptiert eine Liste. Nutze sie, wenn eine API legitimerweise mehrere Bezeichner hat; übergib niemals `options={"verify_aud": False}`, nur damit der Fehler verschwindet.

    python
    # Any one of these may appear in the token's aud.
    claims = jwt.decode(token, signing_key, algorithms=["ES256"], audience=["orders-api", "https://api.example.com/orders"])

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen