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

ASP.Net Core集成Azure AD部署后报IDX10511签名验证失败错误

ASP.NET Core集成Azure AD触发IDX10511签名验证报错解决方案

完整报错如下:

SecurityTokenInvalidSignatureException: IDX10511: Signature validation failed. Keys tried: 'System.Text.StringBuilder'.
kid: 'System.String'.
Exceptions caught:
'System.Text.StringBuilder'.
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(string token, TokenValidationParameters validationParameters)
Exception: An error was encountered while handling the remote login.
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync()

排查解决步骤

  • 同步配套身份配置:仅修改Client ID是不够的,开发服务器对应应用注册的TenantId(租户ID)、Instance(实例地址)需要和本地配置区分开,确保Authority字段取值为https://login.microsoftonline.com/服务器端租户ID(用v2端点则后缀加/v2.0),和服务器端应用注册的所属租户、令牌版本完全匹配。
  • 检查签名密钥拉取逻辑:不要在TokenValidationParameters中硬编码IssuerSigningKey、IssuerSigningKeys参数覆盖默认逻辑,让中间件自动从Azure AD公开元数据拉取对应签名公钥。如果存在公钥缓存不更新的问题,可调整元数据刷新间隔,参考配置代码:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        options.Instance = "https://login.microsoftonline.com/";
        options.TenantId = "你的开发服务器应用注册所属租户ID";
        options.ClientId = "你的开发服务器应用注册Client ID";
        // 调整元数据刷新间隔,避免缓存旧密钥
        options.ConfigurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
            $"{options.Instance}{options.TenantId}/v2.0/.well-known/openid-configuration",
            new OpenIdConnectConfigurationRetriever(),
            new HttpDocumentRetriever())
        {
            AutomaticRefreshInterval = TimeSpan.FromMinutes(5),
            RefreshInterval = TimeSpan.FromSeconds(30)
        };
    });
  • 核对应用注册令牌版本:进入Azure门户查看开发服务器应用注册的清单,确认accessTokenAcceptedVersion取值和Authority的端点版本匹配:取值为2则用带/v2.0后缀的Authority地址,取值为1则不加后缀。
  • 排查网络链路篡改问题:确认开发服务器的反向代理、WAF、防火墙等组件没有篡改Azure AD返回的JWT令牌内容,也没有拦截元数据公钥拉取请求。
  • 开启详细日志定位:在开发服务器环境开启Microsoft.IdentityModel命名空间的Debug级日志,可输出完整的kid(密钥ID)、尝试过的签名密钥列表,快速定位是公钥拉取失败还是密钥不匹配问题。

内容的提问来源于stack exchange,提问作者danilo garduce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:03