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

SAFE Stack对接Azure AD B2C用户流认证openid scope报错问题问询

问题解答

通用问题解答

SAFE Stack 完全可以与 Azure AD B2C 实现对接,已经有大量实践案例支持 B2C 租户内的访客用户通过预定义用户流、自定义策略完成登录认证,适配 v3/v4 版本的 SAFE Stack 框架。

具体报错问题解答

报错原因

你遇到的错误核心原因有两点:

  1. 你使用了普通 Azure AD 的配置逻辑对接 B2C,Microsoft.Identity.Web 对 B2C 场景有独立的配置解析规则,当前配置未自动携带 OIDC 协议要求的必填openid scope
  2. 缺少 B2C 机密客户端要求的客户端密钥配置,请求令牌时应用身份校验未通过

解决方案

按以下步骤调整即可修复:

  1. 修改appsettings.json配置结构
    将原AzureAD配置节改为AzureADB2C,补充客户端密钥、必填scope配置:
"AzureADB2C":
{
    "Instance": "https://RoundTableExcaliburDev.b2clogin.com/",
    "Domain": "RoundTableExcaliburDev.onmicrosoft.com",
    "ClientId": "26e6d007-be46-4928-b06e-04acdbfd2913",
    "ClientSecret": "你之前在B2C应用注册中生成的密钥值",
    "CallbackPath": "/api/login-callback",
    "SignedOutCallbackPath": "/api/logout-callback",
    "SignUpSignInPolicyId": "B2C_1A_SIGNUP_SIGNIN",
    "Scopes": "openid profile offline_access"
}
  1. 调整后端认证服务注册代码
    将原普通AAD的认证注册逻辑替换为B2C专属重载,示例:
// 原普通AAD写法替换为
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration, "AzureADB2C");
  1. 补全B2C权限配置
    进入B2C应用注册的「API权限」页面,确认已添加openid、profile、offline_access三个微软Graph委托权限,且已点击「授予管理员同意」完成权限授权。
  2. 验证中间件顺序
    确认SAFE Stack后端的认证、授权中间件顺序正确:先注册路由,再注册认证中间件,最后注册授权中间件,避免回调路径被其他路由拦截。

额外说明

你之前生成的应用密钥就是配置中的ClientSecret参数,Web应用属于机密客户端,请求B2C令牌端点时需要携带该密钥完成应用身份校验,这是B2C场景的必填配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:15:04