New*_*vRo 3 azure azure-active-directory microsoft-graph-api
我是天蓝色 AD 的新手。
我有一个第三方 API,它为我提供了 userId。我编写了一个 .NET Core API,它应该采用此用户 ID 并获取该特定用户的角色和组。
我读过有关 microsoft graph API 的内容。不确定这在我的场景中是否有用。
还有其他方法可以以编程方式访问 AD 用户的角色和组吗?
使用哪个 API 来获取组和角色信息
首先,Microsoft Graph API 是获取所需信息的最佳选择。
哪种 API 最适合您取决于您的场景(a. 您是否需要顶级直接成员身份或传递检查?b. 您是否只需要安全组甚至 O365 组?),因此您是最好的判断者。
我将在这里列出其中的 3 个,您应该可以从中找到一些想法。
成员-
获取用户是其直接成员的组和目录角色。
注意:只有直接成员资格对此很重要,检查不是传递性的(即用户必须是该组的直接成员才能返回该组。如果用户是组 1 的成员,但组 1 是组 2 的成员,则group2 将不会被返回。这种行为对于某些情况可能没问题,但对于其他情况则不然)
GET /users/{id | userPrincipalName}/memberOf
Run Code Online (Sandbox Code Playgroud)POST /users/{id | userPrincipalName}/getMemberGroups
Run Code Online (Sandbox Code Playgroud)
返回用户所属的所有组。检查这个是否是Transitive 的,因此您可以放心,所有组都将被返回。作为 1 个请求的一部分返回最多 2046 个。它还适用于 O365 组,您可以使用参数过滤到 SecurityEnabled 组
返回用户所属的所有组、目录角色和管理单位。检查再次具有传递性。
实现和代码示例..如何获取token,调用API等。
获取Token进行认证
您应该使用 MSAL 或 ADAL 库,具体取决于您使用 MSAL for v2 和 ADAL for v1 的 Azure AD 终结点。使用这些库不是强制性的,但建议使用,因为它们将遵循最佳实践并为您完成繁重的工作。
与 Microsoft Graph API 端点交互
由于您使用 .NET 编写,因此可以使用 Microsoft Graph Client Library for .NET (SDK)。同样,使用客户端库不是强制性的,但它会使您的代码更具声明性并且更加方便。如果需要,您始终可以使用 HttpClient 并直接访问 REST 端点。
代码示例
ASP.NET Core 2.1 的 Microsoft Graph Connect 示例
重要部分..查看 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);
}
Run Code Online (Sandbox Code Playgroud)
注意:该示例使用委派权限。您可能需要直接使用应用程序权限或代表流程(如果您想在用户的上下文中执行此操作),因为您提到您的 API 正在被调用。此外,这只是您应该查看以了解如何使用 SDK 的示例之一,但是一旦您开始进一步研究 Microsoft Graph API 和客户端库文档,就有许多可用的示例。如果我找到更接近您的确切场景的示例,我会更新答案。
| 归档时间: |
|
| 查看次数: |
5846 次 |
| 最近记录: |