Mensaje de error
IDX10205: Issuer validation failed. Issuer: 'https://sts.windows.net/
También se muestra como
- IDX10205: Issuer validation failed.
- Bearer error="invalid_token", error_description="The issuer 'https://sts.windows.net/00000000-0000-0000-0000-000000000000/' is invalid"
El texto continúa con «Did not match: validationParameters.ValidIssuer: '…' or validationParameters.ValidIssuers: '…' or validationParameters.ConfigurationManager.CurrentConfiguration.Issuer: '…'». ASP.NET Core envía `error_description="The issuer '…' is invalid"`.
Microsoft.IdentityModel.Tokens (.NET) — SecurityTokenInvalidIssuerException
Qué significa
El `iss` del token no es igual a `ValidIssuer`, a ninguna entrada de `ValidIssuers` ni al emisor de la configuración OpenID descargada. El mensaje imprime el emisor del token y todos los valores con los que se comparó. En Microsoft Entra ID, el caso de manual es un token v1.0 (`https://sts.windows.net/<tenant>/`) comprobado contra el emisor v2.0 (`https://login.microsoftonline.com/<tenant>/v2.0`), o al revés.
Por qué ocurre
Token v1.0 de Entra ID, emisor v2.0 (o al revés)
frecuenteLa versión del token la decide el registro de aplicación de la API (`requestedAccessTokenVersion`), no el endpoint que usó el cliente. Una API que espera v2.0 recibe tokens v1.0 hasta que el manifiesto indique lo contrario.
Un token de otro inquilino
frecuenteLas aplicaciones multiinquilino reciben tokens cuyo emisor contiene el ID de inquilino del usuario. Un único `ValidIssuer` solo acepta un inquilino; las API multiinquilino necesitan un validador de emisor que compruebe el inquilino contra una lista de permitidos.
Una diferencia de escritura
ocasionalLa comparación de cadenas es exacta: una barra final, el host en mayúsculas, el sufijo `/v2.0`, la ruta de la política B2C. Copia el valor del documento de descubrimiento.
Cómo solucionarlo
- 1.
Corregir la versión del token en el origen
Si estableces `requestedAccessTokenVersion` en 2 en el manifiesto de la API, Entra ID emite tokens v2.0 con el emisor `login.microsoftonline.com/…/v2.0`.
json // App registration manifest of the API: issue v2.0 access tokens { "api": { "requestedAccessTokenVersion": 2 } } - 2.
Aceptar ambos emisores durante una migración
Incluye las dos formas del emisor de tu propio inquilino; nunca aceptes emisores arbitrarios para que desaparezca el error.
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 ], };