本文へスキップ
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.

    トークンのバージョンを発行側で修正する

    API のマニフェストで `requestedAccessTokenVersion` を 2 に設定すると、Entra ID は発行者が `login.microsoftonline.com/…/v2.0` の 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
        ],
    };

関連するエラー

署名エラーデータベースをすべて見る