Zum Inhalt springen
ecdsa.com
ruby-jwt (Ruby)Ruby

Fehlermeldung

Expected a different algorithm (JWT::IncorrectAlgorithm)

Auch ausgegeben als

  • JWT::IncorrectAlgorithm: Expected a different algorithm

ruby-jwt (Ruby) — JWT::IncorrectAlgorithm from JWT.decode

Was der Fehler bedeutet

Der Header `alg` des Tokens gehört nicht zu den Algorithmen, die du erlaubt hast – und wenn du überhaupt keine Option `algorithm:`/`algorithms:` übergeben hast, erlaubt ruby-jwt gar keinen. Seit ruby-jwt 2.x muss der Verifizierer den Algorithmus explizit nennen, denn dem eigenen Header des Tokens zu vertrauen ist die Ursache der bekannten Angriffe durch Algorithm Confusion. Die Signatur wurde nicht geprüft.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Algorithmus des Ausstellers explizit angeben

    Übergib `algorithm:` (oder `algorithms:` für eine kurze Liste). Bei mehreren Algorithmen verwende einen JWKS-Loader, damit jedes Token mit einem Schlüssel des passenden Typs geprüft wird.

    ruby
    payload, header = JWT.decode(token, public_key, true, algorithm: "ES256")
    # several allowed algorithms (e.g. during a migration), each matched to the right key type:
    payload, header = JWT.decode(token, nil, true, algorithms: ["ES256", "RS256"], jwks: jwks_loader)

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen