azure-active-directory - 如何获取 Azure Active Directory 中用户的 "Assigned Role"?

标签 azure-active-directory microsoft-graph-api

我将 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 RolesRole 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/

相关文章:

python - Microsoft Teams Python Botbuilder 主动消息传递

microsoft-graph-api - 微软图形API : query with $search by multiple fields

azure-active-directory - 带有 OpenIdConnect 的 IIS 反向代理会转到错误的身份提供程序

azure - 使用 Adal 代表用户访问 Azure KeyVault

c# - Azure AD 错误请求

ruby - 在 Azure AD 中通过 Graph API 创建应用程序时获取 'Service_InternalServerError'

azure - 东亚和东南亚的数据中心位于哪个国家

azure-active-directory - 通过 Microsoft Graph API 在 Azure AD 中邀请用户不起作用

rest - 检查 Microsoft 图形 token 是否过期

Azure Devops 组织代码部署不显示组织