Aller au contenu
ecdsa.com
golang-jwt/jwt (Go)Go

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

Comment corriger l’erreur

  1. 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. 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))
    }

Erreurs associées

Parcourir toute la base de données des erreurs de signature