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
L’émetteur a procédé à la rotation de sa clé de signature
fréquenteUne clé configurée statiquement (ou une configuration en cache jamais rafraîchie) ne connaît que l’ancien `kid`. Entra ID, Auth0, Keycloak et IdentityServer effectuent tous des rotations de clés.
Autorité ou adresse de métadonnées d’un autre locataire
fréquentePoints de terminaison Entra ID v1 et v2 confondus, un autre ID de locataire, des politiques B2C avec des métadonnées distinctes, ou une autorité de préproduction. Les clés téléchargées sont valides, mais pour les jetons de quelqu’un d’autre.
La configuration n’a pas pu être chargée
occasionnelleLorsque le téléchargement des métadonnées échoue, le gestionnaire valide avec zéro clé de configuration (« Number of keys in Configuration: '0' »). La véritable erreur (IDX20803) est journalisée séparément.
Une seule IssuerSigningKey pour un émetteur à plusieurs clés
occasionnelleCoder en dur une seule clé du JWKS fonctionne jusqu’à ce que l’émetteur signe avec une autre clé de l’ensemble.
Comment corriger l’erreur
- 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.
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
IDX10511: Signature validation failed. Keys tried:Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt (.NET)IDX20803: Unable to obtain configuration from: 'http://keycloak:8080/realms/mai…Microsoft.IdentityModel.Protocols (.NET)no applicable key found in the JSON Web Key Setjose (JavaScript)Unable to find a signing key that matches '2026-10-rotated'jwks-rsa (Node.js)