基于请求URL的Home Realm Discovery(HRD)在Azure AD B2C中的实现咨询
Azure AD B2C中基于请求URL路径的身份提供商路由实现方案
这个HRD场景完全可以在Azure AD B2C中实现,核心思路是通过自定义策略提取URL路径中的企业标识,再动态路由到对应身份提供商,同时处理同一邮箱跨企业的独立账户逻辑,具体实现步骤如下:
1. 提取URL路径中的企业标识
在自定义策略中,利用字符串处理类型的ClaimsTransformation,从请求的redirect_uri或request_uri中解析出URL路径里的企业名称(如Company1、Company2)。例如,通过GetPathSegments将URL路径拆分为片段,再提取目标位置的片段作为自定义声明(比如命名为companyIdp)。
2. 基于自定义声明动态路由身份提供商
在UserJourney中添加编排步骤,通过Preconditions或Predicate/PredicateGroup机制,根据companyIdp声明的值,触发对应企业的身份提供商技术配置文件。比如当companyIdp等于Company1时,直接跳转至Company1的IDP登录页面;等于Company2时跳转至Company2的IDP。
3. 支持同一邮箱跨企业登录
要实现同一邮箱在不同企业下的独立账户,需要:
- 在用户首次创建时,将
companyIdp声明映射为用户的扩展属性(如extension_companyIdp)并存储; - 在登录流程中,校验用户身份时同时匹配邮箱和
extension_companyIdp属性,确保同一邮箱对应不同企业的账户是相互独立的。这可以通过自定义策略中的用户匹配规则或集成REST API来实现唯一性校验。
参考改造方向
虽然官方示例库中没有完全匹配的现成策略,但可以基于以下基础场景的示例进行改造:
- 动态身份提供商选择的条件分支示例
- 自定义声明提取与转换的示例
- 用户扩展属性存储与校验的示例
内容的提问来源于stack exchange,提问作者user169323
相关产品推荐
相关产品推荐

