클라이언트 애플리케이션이 Microsoft Entra ID에서 액세스 토큰을 가져와서 API(리소스) 애플리케이션으로 보내는 경우 리소스 애플리케이션은 토큰의 유효성을 검사해야 합니다. 토큰에 서명하는 데 사용된 인증서의 공개 키를 사용하여 유효성을 검사합니다. 애플리케이션에서 올바른 키 식별자(kid)를 찾을 수 없는 경우 다음 메시지와 유사한 오류 메시지가 생성될 수 있습니다.
IDX10501: 서명 유효성 검사에 실패했습니다. 'kid'를 일치시킬 수 없음
"IDX10501"과 같은 토큰 서명 유효성 검사 오류를 해결하려면 애플리케이션이 Microsoft Entra ID에서 올바른 공개 키를 검색하도록 구성되어 있는지 확인합니다. 애플리케이션 유형 및 서명 구성에 따라 적절한 키 검색 또는 메타데이터 엔드포인트를 사용합니다.
OAuth2 리소스 애플리케이션의 경우
다음 단계에서는 OAuth2 애플리케이션이 Microsoft Entra ID에서 발급된 토큰의 유효성을 검사하는 방법을 보여 줍니다.
API 클라이언트를 사용하여 권한 부여 코드 흐름을 수행하고 토큰을 획득합니다.
jwt.ms를 사용하여 토큰을 디코딩하고
kid
을/를 확인하십시오.Microsoft Entra ID 애플리케이션 버전에 따라 토큰을 전달자 토큰으로 사용하여 다음 키 검색 엔드포인트 중 하나를 호출합니다. API는 세 개의 키를 반환합니다. 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는 앱별 인증서를 사용하여 토큰에 서명합니다. 올바른 공개 키를 검색하려면 다음 단계를 수행합니다.
API 클라이언트를 사용하여 SAML 앱에 대한 액세스 토큰을 획득합니다.
다음 키 검색 엔드포인트를 사용하여
<tenant>
및<SAML App ID>
을 여러분의 값으로 대체하십시오.https://login.microsoftonline.com/<tenant>/discovery/keys?appid=<SAML App ID>
앱에서 클레임 매핑 정책을 사용하는 사용자 지정 서명 키를 사용하는 경우 앱 클라이언트 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(웹앱)
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 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.