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

AAD Graph迁移至MS Graph:用户组Claims无法获取的权限排查

AAD Graph迁移MS Graph后无法获取用户组的问题解决

一、先排查权限配置的核心问题

从你提供的权限截图来看,重点确认这两点:

  • 权限类型要匹配登录场景:你是用户登录的委托访问场景,必须添加委托权限而非应用权限。如果当前配置的Group.Read.All是应用权限,它仅适用于后台服务调用,不会出现在用户的ID Token中,自然拿不到组信息。建议替换为GroupMember.Read.All(委托权限),这是专门用于获取用户所属组的权限。
  • 权限的同意状态:GroupMember.Read.All属于需要管理员同意的权限,得确认租户管理员已经为你的应用完成权限同意操作,否则用户登录时无法获取该权限,也就查不到组数据。

二、配置组声明让ID Token返回组信息

默认情况下,Azure AD不会自动将用户组信息放入ID Token,必须手动配置:

  1. 进入Azure AD应用注册页面,找到你的应用,点击令牌配置
  2. 点击添加组声明,选择以下配置:
    • 组类型:根据需求选安全组或所有组
    • 声明格式:推荐选组ID,避免组名称重复导致的冲突
    • 务必勾选在ID令牌中发出
  3. 保存配置后让用户重新登录,就能在context.AuthenticationTicket.Identity.Claims中找到groups类型的声明了

三、检查代码是否过滤了组声明

确认你的UseOpenIdConnectAuthentication配置没有过滤groups声明,示例配置如下:

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    // 其他基础配置...
    TokenValidationParameters = new TokenValidationParameters
    {
        RoleClaimType = ClaimTypes.Role,
        NameClaimType = ClaimTypes.Name
        // 不要添加过滤声明的规则,确保groups能被保留
    },
    Notifications = new OpenIdConnectAuthenticationNotifications
    {
        SecurityTokenValidated = context =>
        {
            // 可以先打印所有声明,确认groups是否存在
            foreach (var claim in context.AuthenticationTicket.Identity.Claims)
            {
                Debug.WriteLine($"{claim.Type}: {claim.Value}");
            }
            return Task.CompletedTask;
        }
    }
});

四、备选方案:直接调用MS Graph API获取组

如果不想依赖ID Token的组声明,也可以在用户登录后,用用户的访问令牌调用MS Graph接口获取组列表:

var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider(async requestMessage =>
{
    var accessToken = context.AuthenticationTicket.Identity.FindFirst("access_token").Value;
    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
}));
var userGroups = await graphClient.Me.MemberOf.Request().GetAsync();

这种方式同样需要确保应用已配置GroupMember.Read.All委托权限,且完成了管理员同意。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:31:22