以编程方式从Azure AD获取用户组和角色

问题描述 投票:1回答:1

我是azure AD的新手。

我有第三方API,它给了我一个userId。我编写了一个.NET Core API,它应该使用此userID并获取该特定用户的角色和组。

我已经阅读了有关微软图API的信息。不确定这在我的场景中是否有用。

还有任何其他方式以编程方式访问AD用户的角色和组。

azure azure-active-directory microsoft-graph
1个回答
1
投票

用于获取组和角色信息的API

首先,Microsoft Graph API是获取您正在寻找的信息的最佳选择。

哪种确切的API最适合您取决于您​​的方案(a。您是否需要顶级直接会员资格或传递检查?b。您是否只需要安全组甚至O365组?),因此您是最好的评判者。

我将在这里列出其中的3个,你应该得到一些想法。

  • memberOf - 获取用户是其直接成员的组和目录角色。 注意:只有直接成员资格才能解决这个问题,检查不是传递性的(即用户必须是要返回的组的直接成员。如果用户是group1的成员,但group1是group2的成员,那么不会返回group2。这种行为可能适用于某些情况但不适用于其他情况) GET /users/{id | userPrincipalName}/memberOf
  • getMemberGroups POST /users/{id | userPrincipalName}/getMemberGroups 返回用户所属的所有组。检查这个是否是Transitive,因此您可以放心,所有组都将被退回。最多2046作为1个请求的一部分返回。它也适用于O365组,您可以使用参数过滤到SecurityEnabled组
  • getMemberObjects 返回用户所属的所有组,目录角色和管理单元。检查再次传递。

实现和代码示例..如何获取令牌,调用API等。

  • 获取认证令牌 您应该使用MSAL或ADAL库,具体取决于您使用MSAL for v2和ADAL for v1的Azure AD端点。使用这些库不是强制性的,但建议使用这些库,因为它们将遵循最佳实践并为您完成繁重的工作。
  • 与Microsoft Graph API端点交互 由于您使用.NET编写,因此可以使用Microsoft Graph Client Library for .NET (SDK)。同样,使用客户端库并不是强制性的,但它会使您的代码更具说明性并且更方便。如果需要,您可以随时使用HttpClient并直接点击REST端点。
  • 代码示例 Microsoft Graph Connect Sample for ASP.NET Core 2.1 重要部分..查看GraphService.cs文件以获取获取用户信息的方法,例如: // Load user's profile in formatted JSON. public static async Task<string> GetUserJson(GraphServiceClient graphClient, string email, HttpContext httpContext) { if (email == null) return JsonConvert.SerializeObject(new { Message = "Email address cannot be null." }, Formatting.Indented); try { // Load user profile. var user = await graphClient.Users[email].Request().GetAsync(); return JsonConvert.SerializeObject(user, Formatting.Indented); } 注意:该示例使用委派的权限。您可能需要直接使用应用程序权限或代表流程(如果您想在用户的上下文中执行此操作),因为您提到您的是被调用的API。此外,这只是其中一个示例,您应该了解如何使用SDK,但是一旦您开始进一步了解Microsoft Graph API和客户端库文档,就会有很多可用的示例。如果我找到更接近您的确切方案的样本,我会更新答案。
© www.soinside.com 2019 - 2024. All rights reserved.