Zum Inhalt springen
ecdsa.com
jose (JavaScript)JWKS und Schlüsselermittlung

Fehlermeldung

Expected 200 OK from the JSON Web Key Set HTTP response

jose (JavaScript) — JOSEError from createRemoteJWKSet, code ERR_JOSE_GENERIC

Was der Fehler bedeutet

`createRemoteJWKSet` hat die URL des Schlüsselsatzes angefragt und einen anderen HTTP-Status als 200 erhalten. jose ruft das JWKS mit deaktivierten Weiterleitungen ab (`redirect: "manual"`), deshalb zählt ein 301/302 genauso als Fehlschlag wie ein 404 oder 401. Es wurde kein Schlüssel geladen und keine Token-Signatur geprüft; die von dir konfigurierte URL antwortet nicht mit einem Schlüsselsatz.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    jwks_uri aus dem Discovery-Dokument lesen

    Provider für OpenID Connect veröffentlichen die genaue URL des Schlüsselsatzes als `jwks_uri` in `/.well-known/openid-configuration`. Ermittle sie einmal beim Start und übergib diese URL an `createRemoteJWKSet`.

    js
    import { createRemoteJWKSet } from "jose";
    
    // Resolve jwks_uri from the provider's discovery document instead of guessing it.
    const discovery = await fetch("https://login.example.com/.well-known/openid-configuration").then((r) => r.json());
    const jwks = createRemoteJWKSet(new URL(discovery.jwks_uri));
  2. 2.

    Statuscode prüfen, ohne Weiterleitungen zu folgen

    curl ohne `-L` verhält sich wie jose. Ein 200 mit `{"keys":[...]}` ist das, was du brauchst; ein 30x nennt dir die URL, die du stattdessen konfigurieren musst.

    bash
    # Status line and redirect target, without following redirects (jose does not follow them either)
    curl -sS -o /dev/null -w '%{http_code} %{redirect_url}\n' https://login.example.com/jwks
    curl -s https://login.example.com/.well-known/openid-configuration | jq -r .jwks_uri

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen