首页 > 解决方案 > 为什么我会收到“图形 API 访问令牌失败:'Group.Read.All'”

问题描述

我试图找出为什么我收到错误“”图形 API 访问令牌失败:'Group.Read.All'”

我已按照指南“使用 Azure Active Directory 保护 ASP.NET Core Blazor WebAssembly 托管的应用程序”和“ Azure Active Directory (AAD) 组、管理员角色和用户定义的角色”我可以登录,但我也收到错误消息我不想拥有。

在此处输入图像描述

我不明白 Group.Read.All 电话来自哪里。

这是用于调用 MS Graph API 的 HttpClient 配置

b.Services.AddHttpClient("GraphAPI",
    client => client.BaseAddress = new Uri("https://graph.microsoft.com/"))
    .AddHttpMessageHandler(provider => provider.GetService<AuthorizationMessageHandler>()
                .ConfigureHandler(
                    authorizedUrls: new []{"https://graph.microsoft.com/"},
                    scopes: new []{"Group.Read.All"}
                ));

并在 CustomUserFactory 中使用

{
var client = _clientFactory.CreateClient("GraphAPI");
var response = await client.GetAsync("v1.0/me/memberOf");
if (response.IsSuccessStatusCode)
{
    var userObjects = await response.Content.ReadFromJsonAsync<DirectoryObjects>();
    foreach (var obj in userObjects?.Values)
    {
        if(_appGroups.Contains(obj.DisplayName))
        {
            userIdentity.AddClaim(new Claim("role", obj.DisplayName));
            Console.WriteLine($"group {obj.DisplayName}");
        }
    }
    // var claim = userIdentity.Claims.FirstOrDefault(c => c.Type == "hasgroups");
    // userIdentity.RemoveClaim(claim);
}
else
{
    _logger.LogError($"Graph API request failure: {response.ReasonPhrase}");
}

}

我尝试不设置“authorizedUrls”和“范围”,但登录失败。它再次起作用,我可以读取登录用户的所有组。但我肯定做错了什么。

在 Azure AD 上为我的 Blazor WASM 客户端设置的权限 在此处输入图像描述

标签: azure-active-directoryblazor-webassembly

解决方案


推荐阅读