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

使用Azure AD B2C自定义策略的.NET 8 Blazor Web App报IDX10500错误求助

解决IDX10500签名验证失败问题

安全密钥是什么

这里的安全密钥是Azure AD B2C生成的**JSON Web Key Set (JWKS)**中的公钥,用于验证B2C颁发的ID令牌/访问令牌的签名合法性,确保令牌未被篡改。

配置与查找方法

1. 确认基础配置正确性

在appsettings.json中,Azure AD B2C的配置必须包含完整且正确的参数,示例如下:

"AzureAdB2C": {
  "Instance": "https://你的租户名.b2clogin.com/",
  "Domain": "你的租户名.onmicrosoft.com",
  "TenantId": "你的租户ID",
  "ClientId": "你的应用客户端ID",
  "CallbackPath": "/signin-oidc",
  "SignUpSignInPolicyId": "你的自定义策略ID"
}

AddMicrosoftIdentityWebApp会自动基于这些参数拼接权威地址(Authority),格式为https://你的租户名.b2clogin.com/tfp/你的租户名.onmicrosoft.com/你的自定义策略ID/v2.0/,必须保证该地址指向正确的自定义策略端点。

2. 依赖自动获取密钥(推荐)

Azure AD B2C的JWKS公钥端点为:https://你的租户名.b2clogin.com/你的租户名.onmicrosoft.com/discovery/v2.0/keys?p=你的自定义策略ID
AddMicrosoftIdentityWebApp默认会自动从这个端点拉取公钥用于签名验证,只需确保你的应用能正常访问该端点(无防火墙/代理拦截)。

3. 手动配置密钥(自动获取失败时)

如果自动拉取失效,可以手动添加公钥:

  • 访问上述JWKS端点,复制返回结果中keys数组内的单个密钥对象
  • 在代码中手动配置JWT验证参数:
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAdB2C")
    .EnableTokenAcquisitionToCallDownstreamApi()
    .AddInMemoryTokenCaches();

// 手动注入签名验证密钥
builder.Services.Configure<JwtBearerOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    options.TokenValidationParameters.IssuerSigningKeys = new List<SecurityKey>
    {
        new JsonWebKey("复制的单个JWKS密钥内容")
    };
});

4. 检查自定义策略配置

在Azure AD B2C门户的自定义策略中,确认JwtIssuer技术配置使用的是默认密钥集(或你自定义的签名密钥),若使用自定义签名密钥,需确保应用配置的公钥与该密钥对应。

常见排查点

  • 核对appsettings.json中所有B2C参数与Azure门户中的值完全一致
  • 验证自定义策略的Issuer值与应用配置的Authority匹配
  • 测试JWKS端点是否能返回有效JSON内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:39:57