如何让Blazor Server应用同时支持Azure AD和Azure AD B2C身份验证
Blazor Server双身份体系配置指引
以下是完成Azure B2C应用注册后,需要继续推进的配置步骤:
1. Azure AD B2C 侧配置
- 创建两类用户流:
- 个人账户注册登录流:选择注册并登录类型,身份提供商选择电子邮件、用户名等面向公众的验证方式,按需配置属性收集、令牌返回声明(如姓名、邮箱、用户唯一标识等业务必需字段)
- 工作/学校账户联合登录流:在身份提供商配置中添加Azure AD作为外部联合提供商,填入原有内部Azure AD租户的对应参数,实现内部员工账号直接走原有Azure AD体系验证的逻辑
- 确认两类用户流的令牌返回规则和原有Azure AD的声明结构尽量对齐,减少应用层的适配成本
2. Blazor Server 应用侧配置
2.1 依赖包更新
确保项目已安装Microsoft.Identity.Web、Microsoft.Identity.Web.UI两个官方身份验证适配包,版本与项目使用的.NET大版本保持兼容。
2.2 配置文件更新
在appsettings.json中新增B2C配置节点,原有Azure AD配置节点无需删除:
"AzureAdB2C": { "Instance": "https://<你的B2C租户名>.b2clogin.com", "ClientId": "<B2C应用注册生成的客户端ID>", "Domain": "<你的B2C租户域名>", "SignUpSignInPolicyId": "<个人账户注册登录流的ID>", "CallbackPath": "/signin-oidc-b2c" }
若需要支持密码重置、资料编辑功能,可以额外添加对应用户流的配置项。
2.3 身份验证服务注入修改
修改Program.cs(.NET 6及以上版本)或Startup.cs中的身份验证注入逻辑:
- 保留原有Azure AD身份验证方案,指定唯一方案名如
AzureAD - 新增B2C身份验证方案,指定唯一方案名如
AzureADB2C,关联上一步新增的配置节点 - 可根据业务需求设置默认身份验证方案,或者保留双方案共存,通过登录入口区分
2.4 登录入口与权限逻辑适配
- 调整应用登录页UI,新增两个登录选项:「个人账户注册/登录」、「工作/学校账户登录」,分别指向对应身份验证方案的质询入口
- 修改应用内的权限校验、用户识别逻辑:可以通过令牌的
iss(颁发者)声明区分用户来源,适配内部员工、公众用户的不同权限规则
3. 测试与上线校验
- 本地调试阶段分别测试两类登录路径:
- 个人账户走B2C注册流程,确认注册、登录、权限验证流程正常
- 工作/学校账户用原有内部员工账号测试,确认登录体验、权限和原有逻辑完全一致
- 上线前在B2C应用注册中添加生产环境的回调地址、登出地址到白名单,确保地址与应用配置的
CallbackPath完全匹配 - 生产环境灰度验证,确认两类用户登录均无异常
内容的提问来源于stack exchange,提问作者David Shochet
相关产品推荐
相关产品推荐

