我将 Azure AD 与已注册的应用程序一起使用,并且我正在使用 Microsoft Graph API 来查询 AD。
下面的代码告诉用户被分配到哪些组
var memberof = await graphClient.Users[xxx].MemberOf.Request().GetAsync();
我使用的是标准 AD 包,似乎群组有些受限,我需要购买“高级 AD 包”才能充分使用它们。
所以我不想使用组信息。我对我分配给用户的角色感兴趣,这些角色已放入我的应用程序 list 中。
例如
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Case Manager",
"id": "{A_Guid}",
"isEnabled": true,
"description": "Case Manager's can create and assign Cases to other users",
"value": "CaseManager"
},
那么,我如何使用 Graph Api 来告诉我用户是否具有特定角色?
最佳答案
1。微软图形 API
读取分配给用户的所有应用程序特定角色的能力(即 AppRoleAssignments)目前仅作为 Microsoft Graph API beta endpoint AFAIK 的一部分提供。这不是 v1.0 的一部分。您可以阅读版本 here
从名称“beta”可以明显看出,它不是一个可以依赖于生产应用程序的稳定版本。在 this SO Post by Marc LaFleur 中阅读更多具体要点
确切的 API ( Microsoft Docs Reference ):
GET https://graph.microsoft.com/beta/users/{id | userPrincipalName}/appRoleAssignments
我尝试使用 GraphServiceClient(Microsoft Graph 的 .NET SDK),但找不到与 AppRoleAssignments 相关的任何内容。 (可能是因为 SDK 使用了 1.0 稳定版的元数据,而不是测试版)
无论如何,如果您仍然可以测试它,请使用 Microsoft Graph Explorer 或直接从 C# 代码调用端点
string graphRequest = $"https://graph.microsoft.com/beta/users/{my user GUID}/appRoleAssignments";
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, graphRequest);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
HttpResponseMessage response = await client.SendAsync(request);
2。 Windows Azure AD 图 API
尽管建议尽可能使用 Microsoft Graph API,但在某些情况下 Microsoft Graph 尚未 catch ,因此您不得不使用 Azure AD Graph API。与应用程序管理相关的案例就是其中的一些。
因此您可以使用此 Azure AD Graph API。我从 Azure AD Graph Explorer 快速测试了这个它工作正常。
https://graph.windows.net/{yourtenantid}/users/{id}/appRoleAssignments?api-version=1.6
就像 Microsoft Graph Library for .NET 一样,您可以使用 Azure AD Graph Client Library for .NET你的代码看起来像这样..
aadgraphClient.Users["<user guid>"].AppRoleAssignments;
附带说明一下,由于您专门针对 Microsoft Graph API 提出了问题,因此我已经相应地进行了回答。
至少对于应用程序的当前登录用户,您始终可以找到 Application Roles从 Role claims 分配给他们作为 Azure Active Directory 访问 token 的一部分提供。
尽管这仅对当前用户的角色有帮助,但如果您尝试遍历应用程序的所有用户,则对管理类场景没有帮助。这是一个读取角色声明并根据当前登录用户的应用程序角色进行授权的示例。
Authorization in a web app using Azure AD application roles & role claims
关于azure-active-directory - 如何获取 Azure Active Directory 中用户的 "Assigned Role"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931467/