Message d’erreur
token is unverifiable: error while executing keyfunc: kid "2026-10" not found in key set
Également affiché sous la forme
- token is unverifiable: error while executing keyfunc
- token is unverifiable: no keyfunc was provided
Le texte qui suit « error while executing keyfunc: » est ce que votre Keyfunc a renvoyé, quel qu’il soit. Appeler `jwt.Parse` avec une Keyfunc nil donne « token is unverifiable: no keyfunc was provided ».
golang-jwt/jwt (Go) — jwt.ErrTokenUnverifiable wrapping the error your Keyfunc returned
Ce que cela signifie
golang-jwt n’a pas pu obtenir de clé pour vérifier le jeton : votre `Keyfunc` a renvoyé une erreur, que golang-jwt a enveloppée dans `ErrTokenUnverifiable` (« error while executing keyfunc: … »). Tout ce qui suit ce préfixe est le message de votre propre Keyfunc ; dans la reproduction, il s’agit d’une recherche de clé par `kid` qui n’a rien trouvé. Le jeton n’a été ni vérifié ni rejeté sur le fond.
Pourquoi cela se produit
Le jeton désigne une clé que le service ne possède pas
fréquenteLes clés chargées une seule fois au démarrage deviennent obsolètes dès que l’émetteur effectue une rotation. Un `kid` provenant d’un autre environnement ou d’un autre émetteur provoque le même échec de recherche.
Le jeu de clés n’a pas pu être récupéré
fréquenteLes Keyfunc qui téléchargent le JWKS à la demande renvoient par ce chemin les erreurs réseau (DNS, TLS, délais dépassés, HTTP 404). Le message enveloppé indique la véritable cause de l’échec.
Aucune Keyfunc n’a été passée
occasionnelle`jwt.Parse(token, nil)` ou une variable Keyfunc jamais initialisée. golang-jwt ne peut rien vérifier sans source de clés.
Comment corriger l’erreur
- 1.
Utiliser une Keyfunc JWKS à actualisation automatique
Une Keyfunc adossée à un JWKS actualise les clés en arrière-plan et dès qu’un `kid` inconnu apparaît : les rotations ne provoquent ainsi aucune interruption de service.
go k, err := keyfunc.NewDefaultCtx(ctx, []string{"https://issuer.example.com/.well-known/jwks.json"}) if err != nil { log.Fatalf("load JWKS: %v", err) } // Refetches the JWKS in the background and on unknown kids (rate-limited). token, err := jwt.Parse(raw, k.Keyfunc, jwt.WithValidMethods([]string{"ES256"})) - 2.
Journaliser la cause enveloppée
`errors.Is(err, jwt.ErrTokenUnverifiable)` identifie la classe d’erreur ; l’erreur enveloppée vous indique s’il s’agissait d’une clé introuvable ou d’un échec de récupération.
go if errors.Is(err, jwt.ErrTokenUnverifiable) { // The wrapped error is whatever your Keyfunc returned: log it, answer 401. log.Printf("cannot verify token: %v", errors.Unwrap(err)) }