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

如何在Azure AD B2C中程序化更新用户自定义属性?含权限及注册问题

如何程序化更新Azure AD B2C用户的自定义属性

我完全懂你的困扰——UI里找不到自定义属性的编辑入口,旧文档又过时,连权限配置的地方都摸不着。别慌,咱们用Microsoft Graph API来搞定,这是当前管理B2C用户属性的官方可靠方案,下面一步步来操作:

第一步:切换到正确的B2C租户目录

你提到有默认目录和B2C租户目录,首先得确保自己在托管B2C的那个目录里操作:

  • 点击Azure门户右上角的账户头像,选择「切换目录」,找到你的B2C租户并进入。
  • 进入后,在新版「应用注册」里找你之前注册的Angular应用;如果需要专门用于后台操作的应用,也可以注册一个新的「Web应用」(更适合后台调用API的场景)。

注意:旧版「Application Registrations Legacy」里的b2c-extensions-app是系统应用,专门用来存储用户自定义数据的,咱们不要修改它,只用它的Client ID来确定自定义属性在Graph里的名称。

第二步:配置应用权限(关键步骤!)

不管用现有应用还是新应用,都需要给它添加Microsoft Graph的应用权限(不是委托权限,因为咱们要后台更新用户,不需要用户交互):

  1. 在应用注册的左侧菜单中找到「API权限」。
  2. 点击「添加权限」,选择「Microsoft Graph」,然后切换到「应用权限」选项卡。
  3. 搜索并勾选User.ReadWrite.All(如果需要更全面的权限也可以选Directory.ReadWrite.All,根据你的需求来)。
  4. 点击「添加权限」后,必须点击「授予管理员同意」(只有租户管理员能操作这一步),否则权限不会生效。

第三步:获取Graph API的访问令牌

因为用的是应用权限,咱们用客户端凭证流来获取令牌:

  • 先在应用注册的「证书和密码」里生成一个客户端密码(Client Secret),同时复制应用的Client ID。
  • 发送POST请求到B2C租户的令牌端点:
    POST https://<你的B2C租户名称>.b2clogin.com/<你的B2C租户名称>.onmicrosoft.com/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    &client_id=<你的应用Client ID>
    &client_secret=<你的应用Client Secret>
    &scope=https://graph.microsoft.com/.default
    
  • 请求成功后会返回access_token,这个就是调用Graph API的凭证。

第四步:调用Graph API更新自定义属性

这里要注意:B2C里的自定义属性在Graph API里的名称格式是extension_<b2c-extensions-app的Client ID(去掉短横线)>_<你的自定义属性名>。获取b2c-extensions-app的Client ID的方法:

  • 在B2C租户的旧版应用注册里找到b2c-extensions-app. Do not modify. Used by AADB2C for storing user data,复制它的Client ID,然后去掉所有短横线-。

举个例子:如果b2c-extensions-app的Client ID是1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p,去掉短横线后是1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p,你的自定义属性是Membership,那么Graph里的属性名就是extension_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p_Membership。

然后发送PATCH请求到Graph API:

PATCH https://graph.microsoft.com/v1.0/users/<用户的Object ID>
Content-Type: application/json
Authorization: Bearer <你获取到的access_token>

{
  "extension_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p_Membership": "ReadOnly"
}
  • <用户的Object ID>可以在Azure门户的B2C用户列表里找到对应用户的详情页获取。

常见问题排查

  • 找不到自己的应用注册:确认已经切换到B2C租户目录,新版「应用注册」里应该能看到你之前注册的Angular应用,旧版可能只显示系统应用和早期注册的应用。
  • 权限报错:确保已经完成「授予管理员同意」,并且用的是应用权限(不是委托权限),客户端凭证流获取的令牌才会包含应用权限。
  • 属性名称错误:一定要用正确的带前缀的属性名,否则Graph会返回「属性不存在」的错误。

内容的提问来源于stack exchange,提问作者wonderful world

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:59:17