如何从Azure Active Directory B2C提取手机号恢复邮箱?
解决方案:提取并迁移Azure AD B2C手机号注册用户的恢复邮箱
核心说明
你开启的「手机号注册和登录的恢复邮箱提示(预览版)」收集的邮箱,并非存储在用户默认的mail或otherMails字段中,而是保存在B2C自定义扩展属性里——这就是你在Portal和默认Graph API查询里找不到它的原因。
步骤1:确定恢复邮箱的扩展属性名
- 登录Azure Portal,进入源B2C租户,找到「应用注册」,搜索名为
b2c-extensions-app. Do not modify. Used by AADB2C for storing user data.的系统内置应用(不要修改该应用)。 - 复制该应用的客户端ID,并去掉所有横杠(比如
12345678-1234-1234-1234-1234567890ab需转为123456781234123412341234567890ab)。 - 恢复邮箱的属性名格式为:
extension_<无横杠客户端ID>_recoveryEmail
步骤2:通过Graph API提取恢复邮箱
调用以下Graph API接口(需具备User.Read.All权限):
GET https://graph.microsoft.com/v1.0/users/{用户ID}?$select=id,extension_<无横杠客户端ID>_recoveryEmail
返回结果中即可获取对应的恢复邮箱值。
步骤3:迁移时保留该信息
- 先在目标B2C租户中启用同样的「手机号注册和登录的恢复邮箱提示(预览版)」功能,系统会自动创建对应的扩展属性。
- 迁移用户时,通过Graph API更新目标用户对象,带上该扩展属性:
PATCH https://graph.microsoft.com/v1.0/users/{目标用户ID} Content-Type: application/json { "extension_<目标租户无横杠客户端ID>_recoveryEmail": "用户的恢复邮箱地址" }
注意事项
- 该功能处于预览阶段,属性命名规则可能变动,若上述属性名无效,可通过
GET https://graph.microsoft.com/v1.0/applications/{扩展应用ID}/extensionProperties查询源租户的扩展属性列表确认。 - Azure Portal用户详情页默认不展示自定义扩展属性,只能通过Graph API查看和操作。
内容的提问来源于stack exchange,提问作者Oleksandr Karpenko
相关产品推荐
相关产品推荐

