Azure AD B2C配置OIDC实现与第三方互认身份提供商指导咨询
Azure AD B2C与第三方OIDC互作身份提供商的配置指导与疑问解答
一、你的配置思路正确性确认
- 在B2C中注册应用B:此操作正确。第三方应用B要将你的B2C作为身份提供商,必须在B2C租户内完成应用注册,生成Client Secret后,将Client ID、Client Secret及B2C的OIDC相关端点提供给第三方即可。
- 在B2C中添加新的OIDC提供商:此操作正确。为了让你的应用A支持「使用B登录」,需要将第三方B配置为B2C的外部身份提供商,通过对方提供的元数据URL自动拉取端点信息,再配置好Client ID、Secret、范围和声明映射即可。
二、疑问解答
1. 范围(Scopes)相关
不需要为应用B创建新范围。B2C默认提供的openid、profile、email这几个标准OIDC范围已经包含了基础用户信息(如用户ID、姓名、邮箱),完全满足第三方B创建用户的需求,直接使用这些默认范围即可。
2. 策略(Policies)相关
- 不需要为应用B单独创建User Flow。你现有的User Flow可以直接复用,只要在User Flow的「身份提供商」设置中勾选第三方B即可。
- 关于UserInfo端点:User Flow确实不支持UserInfo端点。如果第三方B的登录流程必须依赖UserInfo端点获取用户信息,那你必须切换到自定义策略——自定义策略支持配置UserInfo端点的调用逻辑,而User Flow无法实现这一点。
- 自动创建用户逻辑:User Flow本身支持「外部IdP登录后自动在B2C创建本地账户」,只要在User Flow的设置中开启「自动创建用户」选项即可,无需额外配置。
三、详细配置步骤
(一)将Azure AD B2C配置为第三方应用B的身份提供商(支持「使用A登录B」)
- 注册应用B到B2C:
- 进入Azure AD B2C门户,打开「应用注册」,点击「新建注册」。
- 填写应用名称,选择「Web/API」类型,输入第三方B提供的回调重定向URI,完成注册。
- 在应用的「证书和机密」中生成Client Secret,保存好Secret值和应用的Client ID,提供给第三方。
- 进入应用的「API权限」,添加B2C的
openid、profile、email权限,点击「授予管理员同意」。 - 提供给第三方的OIDC元数据地址:格式为
https://<你的B2C租户名>.b2clogin.com/<你的B2C租户名>.onmicrosoft.com/<你的User Flow名称>/v2.0/.well-known/openid-configuration,第三方可通过此地址自动获取所有所需端点。
(二)将第三方B配置为Azure AD B2C的外部身份提供商(支持「使用B登录A」)
- 添加OIDC身份提供商到B2C:
- 进入Azure AD B2C门户,打开「身份提供商」,点击「新建」,选择「OpenID Connect」类型。
- 填写显示名称(如「使用B登录」),输入第三方提供的元数据URL,系统会自动填充授权端点、令牌端点等信息。
- 输入第三方提供的Client ID和Client Secret,设置范围为
openid profile email(可根据第三方支持的范围调整)。 - 配置声明映射:将第三方返回的用户声明映射到B2C的标准声明,例如把第三方的
email映射到B2C的email,name映射到displayName,确保B2C能获取足够信息创建用户。
- 更新现有User Flow:
- 打开你当前使用的User Flow,进入「身份提供商」设置,勾选刚添加的第三方B,保存配置。
- 测试User Flow:点击「运行用户流」,验证是否能跳转到第三方B的登录页,登录成功后B2C是否自动创建用户。
四、注意事项
- 如果第三方B必须使用UserInfo端点,务必切换到自定义策略,User Flow无法满足此需求。自定义策略需要编写XML配置文件来实现OIDC提供商集成及UserInfo端点支持。
- 测试阶段先分别验证单向登录流程:先测「用B账号登A」,再测「用A账号登B」,确认自动创建用户逻辑正常后,再验证双向流程。
内容的提问来源于stack exchange,提问作者realmikep
相关产品推荐
相关产品推荐

