Aller au contenu
ecdsa.com
Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET).NET

Message d’erreur

IDX10503: Signature validation failed. The token's kid is: '2026-10', but did not match any keys in TokenValidationParameters or Configuration.

Également affiché sous la forme

  • IDX10503: Signature validation failed. Token does not have a kid. Keys tried:
  • IDX10517: Signature validation failed. The token's kid is missing.
  • Bearer error="invalid_token", error_description="The signature key was not found"

Le texte complet se poursuit par « Keys tried: … », le nombre de clés et des marqueurs `[PII of type … is hidden]` (définissez `IdentityModelEventSource.ShowPII = true` en développement pour voir les valeurs). Vérifié sur 6.36.0, 7.7.1 et 8.23.0 : la version 6.x le formule « IDX10503: Signature validation failed. Token does not have a kid. Keys tried: … » ; les versions 7.x et 8.x utilisent le libellé ci-dessus et signalent un jeton sans `kid` par IDX10517 « The token's kid is missing ».

Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET) — SecurityTokenSignatureKeyNotFoundException

Ce que cela signifie

Le jeton désigne sa clé de signature par un `kid`, et aucune clé de `TokenValidationParameters` (`IssuerSigningKey(s)`) ni de la configuration téléchargée depuis le JWKS de l’autorité ne porte cet identifiant de clé. La signature n’a jamais été calculée : il n’y avait aucune clé candidate. Dans ASP.NET Core, le client voit `WWW-Authenticate: Bearer error="invalid_token", error_description="The signature key was not found"`.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Laisser le gestionnaire récupérer les clés auprès de l’autorité

    Lorsque `Authority` est défini, `JwtBearer` télécharge le JWKS de l’émetteur via la découverte OpenID Connect, le rafraîchit périodiquement, ainsi que lorsqu’un jeton désigne une clé inconnue (`RefreshOnIssuerKeyNotFound`, activé par défaut).

    csharp
    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            // Keys come from {Authority}/.well-known/openid-configuration -> jwks_uri and are refreshed automatically.
            options.Authority = "https://login.example.com/";
            options.Audience = "api://orders";
        });
  2. 2.

    Révéler les valeurs masquées pendant le débogage

    IdentityModel masque par défaut les identifiants de clé et le contenu des jetons dans le texte des exceptions. N’activez `ShowPII` qu’en développement, pour voir quelles clés ont été essayées.

    csharp
    // Development only: show the hidden values ([PII of type ... is hidden]) in IDX messages.
    if (builder.Environment.IsDevelopment())
    {
        Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
    }

Erreurs associées

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