次の方法で共有


Microsoft Entra ID アプリケーションにおけるIDX10501署名検証エラー

クライアント アプリケーションが Microsoft Entra ID からアクセス トークンを取得し、それをリソース (API) アプリケーションに送信する場合、リソース アプリケーションはトークンを検証する必要があります。 トークンの署名に使用された証明書の公開キーを使用して検証します。 アプリケーションで正しいキー識別子 (kid) が見つからない場合は、次のメッセージのようなエラー メッセージが生成される可能性があります。

IDX10501: 署名の検証に失敗しました。 'kid' と一致できません

"IDX10501" などのトークン署名検証エラーを解決するには、アプリケーションが Microsoft Entra ID から正しい公開キーを取得するように構成されていることを確認します。 アプリケーションの種類と署名の構成に基づいて、適切なキー検出またはメタデータ エンドポイントを使用します。

OAuth2 リソース アプリケーションの場合

次の手順では、OAuth2 アプリケーションが Microsoft Entra ID から発行されたトークンを検証する方法を示します。

  1. API クライアントを使用して 承認コード フロー を実行し、トークンを取得します。

  2. jwt.ms を使用してトークンをデコードし、kidをメモします。

  3. Microsoft Entra ID アプリケーションのバージョンに応じて、ベアラー トークンとしてトークンを使用して、次のいずれかのキー検出エンドポイントを呼び出します。 API は 3 つのキーを返します。 手順 2 で取得した kid は、キー検出エンドポイントによって返されるキーのいずれかと一致している必要があります。

    v1.0 アプリケーションの場合は、次を使用します。

    https://login.microsoftonline.com/common/discovery/keys
    

    v2.0 アプリケーションの場合は、次を使用します。

    https://login.microsoftonline.com/common/discovery/v2.0/keys
    

SAML リソース アプリケーションの場合

SAML の場合、Microsoft Entra ID はアプリ固有の証明書を使用してトークンに署名します。 正しい公開キーを取得するには、次の手順に従います。

  1. API クライアントを使用して、SAML アプリのアクセス トークンを取得します。

  2. 次のキー検出エンドポイントを使用して、 <tenant><SAML App ID> を実際の値に置き換えます。

    https://login.microsoftonline.com/<tenant>/discovery/keys?appid=<SAML App ID>
    
  3. 要求 マッピング ポリシーを使用するカスタム署名キーをアプリで使用する場合は、アプリ クライアント ID を含む appid クエリ パラメーターを追加する必要があります。 この手順は、アプリの特定の署名キー情報を指す jwks_uri を取得するために必要です。 例えば次が挙げられます。

    https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e
    

ミドルウェアの構成例

署名の検証エラーを回避するには、適切なメタデータ エンドポイントを使用するようにミドルウェアを構成します。

OpenID Connect ミドルウェア (OWIN)

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = authority,
        RedirectUri = redirectUri,
        MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>",
        PostLogoutRedirectUri = redirectUri,
    });

JWT ベアラー認証ミドルウェア

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
    Audience = "...",
    Authority = "...",
    MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>",
    TokenValidationParameters = new TokenValidationParameters
    {
        // Additional validation parameters
    }
});

Microsoft.Identity.Web (Web アプリ)

services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches();

services.Configure<MicrosoftIdentityOptions>(options =>
{
    options.MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>";
});

Microsoft.Identity.Web (Web API)

services.AddMicrosoftIdentityWebApiAuthentication(Configuration);

services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options =>
{
    options.MetadataAddress = "https://login.microsoftonline.com/<tenant>/.well-known/openid-configuration?appid=<SAML App ID>";
});

次のステップ

Microsoft Entra ID 署名キーのロールオーバーの詳細については、 Microsoft ID プラットフォームのアクセス トークンに関するページを参照してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、 サポートリクエストを作成するか、 Azure コミュニティ サポートに問い合わせてください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。