如何管理Azure AD B2C应用以实现多应用对单一API的访问
Azure AD B2C多客户端访问同一API配置方案
Azure AD B2C原生支持多个客户端应用访问同一个受保护API,无需使用不支持的On-behalf-of流,也不需要无限制开放CORS产生安全隐患,具体实现步骤如下:
前置逻辑说明
你现有ASP.NET MVC应用的后端接口,本质是AAD B2C中注册的API资源,原有Angular前端、新开发的Angular PWA都属于调用该API的客户端应用,B2C支持给多个不同客户端授予同一个API的访问权限。
具体配置步骤
- 第一步:确认ASP.NET后端API的注册配置
进入AAD B2C应用注册界面,找到你原有ASP.NET应用对应的注册项,切换到「公开API」面板,确认已经定义了自定义作用域(示例格式:api://{ASP应用的clientId}/access_as_user),该作用域是后续客户端申请访问权限的核心依据。 - 第二步:给PWA应用授予API访问权限
找到PWA对应的AAD B2C应用注册项,切换到「API权限」面板,点击「添加权限」→ 选择「我的API」→ 选中原有ASP.NET应用,勾选上一步定义的access_as_user作用域,提交后点击「授予管理员同意」完成授权。 - 第三步:校验ASP.NET后端的身份验证配置
原有ASP.NET后端只要已经配置了AAD B2C的JWT校验逻辑,仅需确认校验规则中的aud(受众)字段为ASP应用自身的clientId即可,无需额外修改,本身就会自动校验所有合法客户端签发的、携带对应作用域的访问令牌。 - 第四步:调整PWA端MSAL配置
在PWA的MSAL初始化逻辑中,将ASP.NET API的自定义作用域添加到获取令牌的scopes参数中,调用后端接口时将MSAL返回的访问令牌携带在Authorization请求头中即可。 - 第五步:安全配置CORS规则
无需全局开放CORS,仅需在ASP.NET后端的CORS配置中,仅将PWA的正式域名加入允许的源列表,同时仅放行Authorization请求头和业务用到的请求方法,不存在安全隐患。
常见问题排查
- 若令牌校验失败,可先解码访问令牌,确认
aud字段是否为ASP.NET应用的clientId,scp字段是否包含定义的自定义作用域 - 两个应用注册必须属于同一个AAD B2C租户,跨租户场景需要额外配置多租户支持规则
内容的提问来源于stack exchange,提问作者ismv
相关产品推荐
相关产品推荐

