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

如何通过Microsoft Graph API修改Microsoft Entra External ID自定义用户属性并使其仍出现在JWT令牌中

如何通过Microsoft Graph API修改Microsoft Entra External ID自定义用户属性并使其仍出现在JWT令牌中

嘿,我完全懂你遇到的问题——在Azure B2C里用得顺风顺水的Graph API更新自定义属性的方法,换到Entra External ID就失效了,明明Graph能读到新值,但JWT里就是不显示。这确实是因为两者在自定义属性的处理逻辑上有几个关键差异,我来帮你一步步解决:

1. 确认自定义属性的正确Graph API名称

你之前用的extension_extAppId_testattribute大概率有问题——在Entra External ID中,自定义用户属性的Graph命名规则是:
extension_<应用ID去掉所有横杠>_<属性名称>
比如你的应用ID是12345678-1234-1234-1234-1234567890ab,去掉横杠后就是123456781234123412341234567890ab,对应的属性名应该是extension_123456781234123412341234567890ab_testattribute。

你可以直接在Entra Admin Center里验证这个准确名称:

  • 进入Identity > External identities > Custom user attributes
  • 找到你的TestAttribute,查看它的属性名称字段,直接用这个值就行,别自己拼接。

2. 修正Graph API的更新代码

确认了正确的属性名后,你的Patch代码逻辑是对的,只需要替换成准确的属性名称即可:

// 替换成你从Entra Admin Center拿到的准确属性名
var customAttribute = "extension_123456781234123412341234567890ab_testattribute";
var attributeValue = "你的新属性值";

var extensionInstance = new Dictionary<string, object> { { customAttribute, attributeValue } };

var updatedResult = await _graphServiceClient
    .Users[userId]
    .PatchAsync(new User
    {
        AdditionalData = extensionInstance
    });

3. 检查令牌声明映射的配置

就算你正确更新了属性,还要确保Enterprise Applications里的SSO声明映射指向的是同一个准确属性:

  • 进入Enterprise applications > 你的应用 > Single sign-on
  • 找到User attributes & claims部分
  • 确认你添加的TestAttr声明的源属性,和Graph API用的extension_xxx_testattribute完全一致。

4. 清除用户会话,重新登录

有时候令牌会有缓存,修改属性后用户的现有会话还保留着旧值。你可以让用户退出后重新登录,或者用Graph API主动撤销用户的会话:

await _graphServiceClient.Users[userId].InvalidateAllRefreshTokensAsync();

这样用户下次登录时,就能获取到新的属性值并包含在JWT里了。

额外注意点

  • 确保自定义属性创建时勾选了可写:在Custom user attributes页面创建属性时,必须勾选“可写”选项,否则Graph API无法修改它。
  • 别搞混显示名称和Graph属性名:TestAttribute是显示名称,Graph要用的是带extension前缀的那个正式属性名,千万别搞混。

按照这些步骤操作后,你修改的属性值应该就能正常出现在JWT令牌里了。

备注:内容来源于stack exchange,提问作者Misko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:58:13