gpt4 book ai didi

c# - 如何获得AAD群成员?

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:51 29 4
gpt4 key购买 nike

如何使用 Azure Active Directory 获取 OutLook 中的组成员列表。我已经在 Azure 门户中注册了我的应用程序。我是这个 Azure API 的新手。我的问题是通过 C# 获取特定组的成员列表。

我有应用程序、客户端 ID、对象 ID、租户 ID、URI、客户端 key 。但我不知道如何使用它?

我的目标是如果我给组邮件 ID 意味着应该显示组列表!

最佳答案

我们可以使用Azure AD Graph列出特定组的成员,您可以从here查看REST .

我们可以使用客户端凭据流程通过 Azure AD 进行身份验证,无需用户交互。要将 Azure AD Graph 与客户端凭据流程结合使用,我们需要首先向应用授予应用程序权限,如下所示:

enter image description here

以下是使用此流程打印成员的代码示例,供您引用:

安装 Active Directory 身份验证库:

Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory

安装 Microsoft Azure Active Directory 图形库:

Install-Package Microsoft.Azure.ActiveDirectory.GraphClient

代码:

static void Main(string[] args)
{
string authority = "https://login.microsoftonline.com/{0}";
string graphResourceId = "https://graph.windows.net";
string tenantId = "xxxx.onmicrosoft.com";
string clientId = "";
string secret = "";

authority = String.Format(authority, tenantId);
Uri servicePointUri = new Uri(graphResourceId);
Uri serviceRoot = new Uri(servicePointUri, tenantId);

AuthenticationContext authContext = new AuthenticationContext(authority);
var accessToken = authContext.AcquireTokenAsync(graphResourceId, new ClientCredential(clientId, secret)).Result.AccessToken;

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await Task.FromResult(accessToken));
var groupFetcher = (IGroupFetcher)activeDirectoryClient.Groups.ExecuteAsync().Result.CurrentPage.First(g => g.Mail == "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6c0b1e03191c5d2c1414141442030201050f1e031f030a18420f0301" rel="noreferrer noopener nofollow">[email protected]</a>");
var membersResult = groupFetcher.Members.ExecuteAsync().Result;
PrintMembers(membersResoult);

while (membersResoult.MorePagesAvailable)
{
membersResoult = membersResoult.GetNextPageAsync().Result;
PrintMembers(membersResult);
}

Console.ReadLine();

}

static void PrintMembers(IPagedCollection<IDirectoryObject> pageCollection)
{
foreach (var member in pageCollection.CurrentPage)
{
var user = member as Microsoft.Azure.ActiveDirectory.GraphClient.User;
if (user != null)
Console.WriteLine(user.DisplayName);
else
{
var groupMember = member as Microsoft.Azure.ActiveDirectory.GraphClient.Group;
Console.WriteLine(groupMember.DisplayName);
}
}
}

更新(附加代码以显示 token 中的声明)

安装包以帮助解码 token (install-package System.IdentityModel.Tokens.Jwt)

string accessToken = "";
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(accessToken) as JwtSecurityToken;

foreach (var claim in tokenS.Claims)
{
Console.WriteLine($"{claim.Subject}:{claim.Value}");
}

关于c# - 如何获得AAD群成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619291/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com