如何在Azure B2C内置注册策略中自动用名和姓生成显示名称?
如何在Azure B2C内置用户流中自动生成显示名(无需用户输入)
没问题,在使用内置用户流程的前提下,完全可以实现自动用「名」和「姓」拼接生成显示名,既不用让用户手动输入,也能避免用户名称显示为"Undefined"。核心思路是利用API连接器在注册流程的后端完成字段拼接,具体操作步骤如下:
1. 搭建自定义拼接API服务
你需要准备一个简单的HTTPS API服务(可以用Azure Functions、App Service等轻量服务实现),这个API要接收B2C发送的「名」(givenName)和「姓」(surname)字段,返回拼接好的显示名(displayName)。
API的请求/响应格式要符合B2C要求:
- B2C发送的请求示例:
{ "givenName": "John", "surname": "Doe", "objectId": "<用户临时ID>" }
- 你的API需要返回的响应示例:
{ "displayName": "John Doe" }
注意:API必须支持HTTPS,同时要配置CORS允许B2C租户域名访问。
2. 在Azure B2C中配置API连接器
- 登录Azure门户,进入你的B2C租户,找到「用户流」板块,选择要修改的注册用户流。
- 在用户流左侧菜单中选择「API连接器」,点击「添加API连接器」。
- 填写API名称、终结点URL,若API需要认证(比如API密钥),在此配置对应的认证方式。
- 保存配置好的API连接器。
3. 将API连接器绑定到注册流程
- 进入用户流的「用户属性」设置,移除「显示名称」的输入项(确保用户注册时看不到这个字段)。
- 切换到「编排步骤」,找到「创建用户」步骤(通常是第5步左右),点击「添加步骤」,选择「调用API」,再选中你刚创建的API连接器。
- 配置映射规则:将B2C的「名」和「姓」字段映射到API的请求参数;再将API返回的
displayName映射到B2C用户的「显示名称」属性。
4. 测试用户流
现在测试注册流程:用户只需输入名、姓及其他必填字段(如邮箱、密码),提交后API连接器会自动完成名+姓的拼接,将结果存入用户的displayName属性中,不会再出现"Undefined"的情况。
补充:批量修复历史用户(如果存在Undefined数据)
如果已经有部分用户的显示名为"Undefined",可以用Microsoft Graph API批量更新:
# PowerShell示例:批量更新用户显示名 Connect-MgGraph -Scopes "User.ReadWrite.All" $users = Get-MgUser -Filter "displayName eq 'Undefined'" -Select Id, GivenName, Surname foreach ($user in $users) { $newDisplayName = "$($user.GivenName) $($user.Surname)" Update-MgUser -UserId $user.Id -DisplayName $newDisplayName }
内容的提问来源于stack exchange,提问作者Ayesh Nipun
相关产品推荐
相关产品推荐

