Message d’erreur
IDX10205: Issuer validation failed. Issuer: 'https://sts.windows.net/
Également affiché sous la forme
- IDX10205: Issuer validation failed.
- Bearer error="invalid_token", error_description="The issuer 'https://sts.windows.net/00000000-0000-0000-0000-000000000000/' is invalid"
Le texte se poursuit par « Did not match: validationParameters.ValidIssuer: '…' or validationParameters.ValidIssuers: '…' or validationParameters.ConfigurationManager.CurrentConfiguration.Issuer: '…' ». ASP.NET Core envoie `error_description="The issuer '…' is invalid"`.
Microsoft.IdentityModel.Tokens (.NET) — SecurityTokenInvalidIssuerException
Ce que cela signifie
Le claim `iss` du jeton n’est égal ni à `ValidIssuer`, ni à aucune entrée de `ValidIssuers`, ni à l’émetteur de la configuration OpenID téléchargée. Le message affiche l’émetteur du jeton et chacune des valeurs auxquelles il a été comparé. Dans Microsoft Entra ID, le cas d’école est un jeton v1.0 (`https://sts.windows.net/<tenant>/`) vérifié par rapport à l’émetteur v2.0 (`https://login.microsoftonline.com/<tenant>/v2.0`), ou l’inverse.
Pourquoi cela se produit
Jeton Entra ID v1.0, émetteur v2.0 (ou l’inverse)
fréquenteLa version du jeton est déterminée par l’inscription d’application de l’API (`requestedAccessTokenVersion`), et non par le point de terminaison utilisé par le client. Une API qui attend des jetons v2.0 reçoit des jetons v1.0 tant que le manifeste n’indique pas autre chose.
Un jeton d’un autre locataire
fréquenteLes applications multilocataires reçoivent des jetons dont l’émetteur contient l’ID de locataire de l’utilisateur. Un `ValidIssuer` unique n’accepte qu’un seul locataire ; les API multilocataires ont besoin d’un validateur d’émetteur qui vérifie le locataire par rapport à une liste de locataires autorisés.
Différence d’écriture
occasionnelleComparaison exacte de chaînes : barre oblique finale, hôte en majuscules, suffixe `/v2.0`, chemin de politique B2C. Copiez la valeur depuis le document de découverte.
Comment corriger l’erreur
- 1.
Corriger la version du jeton à la source
Définir `requestedAccessTokenVersion` sur 2 dans le manifeste de l’API amène Entra ID à émettre des jetons v2.0 avec l’émetteur `login.microsoftonline.com/…/v2.0`.
json // App registration manifest of the API: issue v2.0 access tokens { "api": { "requestedAccessTokenVersion": 2 } } - 2.
Accepter les deux émetteurs pendant une migration
Listez les deux formes de l’émetteur de votre propre locataire, et n’acceptez jamais d’émetteurs arbitraires pour faire disparaître l’erreur.
csharp options.TokenValidationParameters = new TokenValidationParameters { ValidIssuers = [ $"https://login.microsoftonline.com/{tenantId}/v2.0", $"https://sts.windows.net/{tenantId}/", // only while v1.0 tokens are still in circulation ], };