You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决SecurityTokenSignatureKeyNotFoundException: IDX10503签名验证失败问题

解决Azure AD对接ASP.NET Core MVC时的IDX10503签名验证错误

出现SecurityTokenSignatureKeyNotFoundException: IDX10503: Signature validation failed错误,核心原因是应用无法找到与token的kid匹配的签名密钥,以下是针对性的解决步骤:

1. 严格核对appsettings.json中的Azure AD配置

确保配置参数与Azure AD门户中应用注册的信息完全一致,示例配置如下:

"AzureAd": {
  "Instance": "https://login.microsoftonline.com/",
  "Domain": "your-domain.onmicrosoft.com",
  "TenantId": "你的租户ID",
  "ClientId": "你的应用客户端ID",
  "CallbackPath": "/signin-oidc"
}
  • 重点确认TenantId:不要误填为common(除非是多租户应用),必须是Azure AD门户中显示的租户ID
  • 若使用CIAM租户,需确保Domain和TenantId对应CIAM租户的信息

2. 检查Azure AD应用注册的密钥/证书配置

  • 如果应用使用证书验证:确认证书已正确上传至Azure AD应用注册的“证书和密码”页面,且本地应用进程有权限访问证书的私钥
  • 如果使用客户端密钥:确认密钥未过期,且在appsettings.json中添加了正确的ClientSecret字段(若需要)

3. 清理缓存并强制刷新配置

开发环境中,旧的配置缓存可能导致密钥不匹配:

  • 删除项目的bin和obj目录,重新生成项目
  • 可在代码中缩短配置刷新间隔(仅开发环境使用):
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        builder.Configuration.Bind("AzureAd", options);
        options.ConfigurationManager.RefreshInterval = TimeSpan.FromMinutes(1);
    });

4. 验证Token的受众与颁发者

通过已启用的PII日志查看Token内容:

  • 确认aud(受众)字段值等于应用的ClientId
  • 确认iss(颁发者)字段值与配置中的Instance + TenantId一致(例如https://login.microsoftonline.com/你的租户ID/v2.0)
  • 若受众不匹配,需在Azure AD应用注册的“公开API”页面添加正确的受众

5. 指定正确的Azure AD终结点版本

如果是基于v2.0协议的应用(如CIAM场景),需在配置中明确指定权威终结点:
在appsettings.json的AzureAd节点添加:

"Authority": "https://login.microsoftonline.com/{你的租户ID}/v2.0"

内容的提问来源于stack exchange,提问作者Skye MacMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:50:02