.NET 4.6 C#中如何获取Azure AD组的显示名称?
如何在Azure AD JWT声明中包含组显示名称(无需Graph API)
操作步骤
步骤1:配置Azure AD应用程序的组声明
- 登录Azure门户,找到你的应用注册。
- 进入令牌配置页面,点击添加组声明。
- 在弹出的配置窗口中:
- 选择要包含的组类型(安全组、通讯组或角色)。
- 在组ID下拉菜单中,选择组显示名称(若包含本地AD同步组,需确保目录扩展属性已同步,或选择同时包含ID和名称)。
- 可选:勾选将组声明添加到ID令牌或访问令牌,根据需求选择。
- 保存配置。
步骤2:更新代码获取组声明
配置完成后,新生成的JWT令牌会包含groups声明,值为组的显示名称。直接从解析后的令牌中读取即可:var handler = new JwtSecurityTokenHandler(); JwtSecurityToken decodedIdToken = handler.ReadToken(base64IDToken) as JwtSecurityToken; // 获取组显示名称列表 var groupDisplayNames = decodedIdToken.Claims .Where(c => c.Type == "groups") .Select(c => c.Value) .ToList();
注意事项
- 若组数量超过150个,Azure AD默认仅返回组ID,不会返回显示名称。此时需启用组超限设置:在令牌配置的组声明中,勾选为超过限制的组启用增量查询,应用需拥有
Directory.Read.All权限,但无需主动调用Graph API,令牌会返回_claim_names和_claim_sources声明,JwtSecurityTokenHandler会自动解析这些增量声明(需.NET Framework 4.7.2+或.NET Core 3.0+)。 - 确保应用权限配置正确,无需额外Graph API权限,仅需完成上述令牌配置即可。
内容的提问来源于stack exchange,提问作者sajid
相关产品推荐
相关产品推荐

