You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure AD B2C用户流注册用户自动设置自定义属性?

最佳实践:Azure AD B2C注册用户自动设置extension_role属性

前提准备

首先确保你已经在Azure AD B2C租户中创建了extension_role自定义用户属性(类型为字符串,可预先设置允许的值为Customer和Admin)。


方案一:用户流 + API连接器(推荐,适合非开发者或轻量场景)

这种方式无需编写复杂的XML策略,通过API连接器在用户注册流程中自动注入角色值:

  • 创建一个后端API(比如Azure Function),该API接收B2C发送的注册请求数据,直接返回包含extension_role: "Customer"的JSON响应,格式示例:
    {
      "extension_role": "Customer"
    }
    
    要求API必须是HTTPS协议,且响应符合B2C API连接器的格式规范(无额外错误信息时返回200状态码)。
  • 进入Azure AD B2C的用户流配置页面,选择你的注册用户流,在"API连接器"环节,添加上述API并设置触发时机为创建用户之前。
  • 测试注册流:完成用户注册后,在B2C用户列表中查看该用户的extension_role属性,确认已自动设为Customer。

方案二:自定义策略(适合复杂逻辑或高度定制场景)

如果需要更灵活的流程控制,可通过自定义策略实现自动赋值:

  • 在TrustFrameworkExtensions.xml中,为extension_role声明设置默认值:
    <ClaimsSchema>
      <ClaimType Id="extension_role">
        <DisplayName>User Role</DisplayName>
        <DataType>string</DataType>
        <DefaultValue>Customer</DefaultValue>
      </ClaimType>
    </ClaimsSchema>
    
  • 在负责写入用户数据的技术配置文件(如AAD-UserWriteUsingEmailAddress)中,添加持久化声明,确保角色值被写入用户存储:
    <PersistedClaims>
      <!-- 保留原有持久化声明 -->
      <PersistedClaim ClaimTypeReferenceId="extension_role" />
    </PersistedClaims>
    
  • 更新并发布自定义策略,测试注册流程验证属性设置是否生效。

管理员用户的创建方式

管理员用户通过API(如Microsoft Graph API)创建时,直接在请求体中指定extension_role为Admin即可,示例请求:

POST https://graph.microsoft.com/v1.0/users
{
  "accountEnabled": true,
  "displayName": "Admin User",
  "mailNickname": "adminuser",
  "userPrincipalName": "admin@yourb2ctenant.onmicrosoft.com",
  "passwordProfile": {
    "forceChangePasswordNextSignIn": false,
    "password": "StrongPass123!"
  },
  "extension_xxxxxx_role": "Admin"
}

注意:extension_xxxxxx_role中的xxxxxx需替换为你创建自定义属性时所用扩展应用的ID(去掉连字符)。

内容的提问来源于stack exchange,提问作者Mojtaba Khooryani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:37:20