azure-active-directory - 为什么我会收到“图形 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”和“范围”,但登录失败。它再次起作用,我可以读取登录用户的所有组。但我肯定做错了什么。