Перейти к содержимому
ecdsa.com
Microsoft.IdentityModel.Tokens (.NET).NET

Сообщение об ошибке

IDX10205: Issuer validation failed. Issuer: 'https://sts.windows.net/

Также выводится как

  • IDX10205: Issuer validation failed.
  • Bearer error="invalid_token", error_description="The issuer 'https://sts.windows.net/00000000-0000-0000-0000-000000000000/' is invalid"

Дальше текст продолжается так: «Did not match: validationParameters.ValidIssuer: '…' or validationParameters.ValidIssuers: '…' or validationParameters.ConfigurationManager.CurrentConfiguration.Issuer: '…'». ASP.NET Core отправляет `error_description="The issuer '…' is invalid"`.

Microsoft.IdentityModel.Tokens (.NET) — SecurityTokenInvalidIssuerException

Что это означает

Значение `iss` в токене не совпадает ни с `ValidIssuer`, ни с одним из элементов `ValidIssuers`, ни с издателем из загруженной конфигурации OpenID. Сообщение выводит издателя токена и все значения, с которыми его сравнивали. В Microsoft Entra ID хрестоматийный случай — токен v1.0 (`https://sts.windows.net/<tenant>/`), который проверяют по издателю v2.0 (`https://login.microsoftonline.com/<tenant>/v2.0`), или наоборот.

Почему это происходит

Как исправить

  1. 1.

    Исправьте версию токена у источника

    Если задать `requestedAccessTokenVersion` равным 2 в манифесте API, Entra ID будет выдавать токены v2.0 с издателем `login.microsoftonline.com/…/v2.0`.

    json
    // App registration manifest of the API: issue v2.0 access tokens
    {
      "api": { "requestedAccessTokenVersion": 2 }
    }
  2. 2.

    На время миграции принимайте оба издателя

    Перечислите обе формы издателя вашего собственного тенанта; никогда не принимайте произвольных издателей, лишь бы ошибка исчезла.

    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
        ],
    };

Связанные ошибки

Открыть всю базу ошибок подписей