通过邮箱地址将联合用户关联到Azure B2C本地用户
Azure B2C自定义策略问题解决方案
问题1:根据邮箱域名自动重定向到对应IDP
可以通过域名提示结合自定义策略的前置逻辑实现,具体操作如下:
- 在登录初始页面添加邮箱收集步骤,让用户输入邮箱地址
- 新增声明转换规则,用
ExtractEmailDomain类型的ClaimsTransformation从邮箱中提取域名 - 在编排步骤中添加前置条件(
Precondition),根据提取到的域名匹配对应的IDP:- 例如判断域名是
@contoso.com时,跳转到Azure AD的技术配置;域名是@gmail.com时跳转到Google的技术配置 - 也可以为每个IDP配置域名映射,通过设置
domain_hint参数让策略自动识别并跳转至对应IDP
- 例如判断域名是
问题2:改用邮箱地址关联联合用户与本地用户
需要调整以下几部分的声明转换和策略配置:
- 替换用户匹配的核心逻辑:把原依赖
AAD-UserReadUsingObjectId的联合用户匹配步骤,替换为AAD-UserReadUsingEmailAddress,用邮箱作为匹配键 - 修正IDP的声明映射:在每个外部IDP的
TechnicalProfile中,确保email声明被正确映射到B2C的email声明,比如Azure AD的输出声明设置为<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>,Google则对应其返回的email字段 - 调整本地用户创建流程:在邀请用户创建本地账户的步骤中,将
email设为必填的唯一标识字段,确保后续联合登录时能通过邮箱匹配到该账户 - 更新依赖oid的配置:检查所有使用
oid作为用户唯一标识的ClaimsTransformation,将其替换为email,比如令牌颁发、用户信息同步等步骤,均以邮箱作为关联依据
内容的提问来源于stack exchange,提问作者Arie van Someren
相关产品推荐
相关产品推荐

