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

Azure AD B2C用户流JWT未返回自定义应用扩展属性问题

核心问题

你配置不生效是踩了Azure AD B2C的两个硬性规则坑:

  1. 所有需要出现在B2C签发令牌里的自定义用户扩展属性,必须创建在租户自动生成的专用扩展应用上,建在你自己的业务应用上的扩展属性,B2C令牌签发管线根本不会读取。
  2. 普通Azure AD用应用清单optionalClaims加自定义声明的方式,对B2C场景不生效,B2C的令牌声明配置是绑定在用户流/自定义策略上的,和业务应用的清单配置无关。
正确操作流程
  • 第一步:获取B2C专用扩展应用的信息
    进入Azure AD B2C的「应用注册」页面,选择「所有应用」,找到名称为b2c-extensions-app. Do not modify. Used by AADB2C for storing user data.的应用,复制两个值:
    • 应用的对象ID(objectId),用于创建扩展属性的API路径
    • 应用的客户端ID(appId),去掉所有横杠,这个值才是扩展属性名里要拼接的ID段
  • 第二步:在专用扩展应用上创建扩展属性
    调用Graph API发POST请求创建属性,注意路径里的ID是上一步拿到的扩展应用对象ID,不是你业务应用的:
POST https://graph.microsoft.com/v1.0/applications/{b2c-extensions-app的对象ID}/extensionProperties
{
    "name": "name",
    "dataType": "String",
    "targetObjects": [
        "User"
    ]
}
  • 第三步:给目标用户设置扩展属性值
    调用PATCH请求更新用户属性,属性名里拼接的是扩展应用去掉横杠的客户端ID:
PATCH https://graph.microsoft.com/v1.0/users/{目标用户对象ID}
{
    "extension_{b2c-extensions-app去掉横杠的客户端ID}_name": "1234"
}
  • 第四步:配置令牌签发规则
    不要改业务应用的清单配置,根据你用的B2C流程类型选对应配置:
    • 如果你用的是官方预置的用户流:进入对应登录用户流的配置页,找到「应用程序声明」选项,在列表里找到你刚创建的扩展属性,勾选后保存配置即可,属性会自动加入返回的id_token和access_token。
    • 如果你用的是自定义IEF策略:先在扩展策略文件里声明对应的目录扩展属性,再在依赖方(RP)策略文件的OutputClaims节点中添加该属性作为输出声明,策略上传后即可生效。
验证方式

配置完成后重新发起登录请求,拿到返回的JWT解码后,就能看到带extension_前缀的自定义属性声明了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:45:47