Azure Graph RESTは、1つのグループから直接メンバーを取得できます。メンバーのユーザーを再帰的に取得するには、それを自分で実装する必要があります。ここにあなたの参考のためのAzure ADグラフライブラリを使ってC#でのコードサンプルの配線である:
public void testGetMembersRecursively()
{
var accessToken="";
var tenantId="";
var groupName="";
var client = GraphHelper.CreateGraphClient(accessToken,tenantId);
var group = (Group)client.Groups.ExecuteAsync().Result.CurrentPage.First(g => g.DisplayName ==groupName);
var groupFetcher = client.Groups.GetByObjectId(group.ObjectId);
List<string> users = new List<string>();
GetMembersRecursively(groupFetcher, users);
Console.WriteLine(String.Join("\n", users.Distinct<string>().ToArray()));
}
public void GetMembersRecursively(Microsoft.Azure.ActiveDirectory.GraphClient.IGroupFetcher groupFetcher, List<string> users)
{
var membersResoult = groupFetcher.Members.ExecuteAsync().Result;
AddMember(membersResoult, users);
while (membersResoult.MorePagesAvailable)
{
membersResoult = membersResoult.GetNextPageAsync().Result;
AddMember(membersResoult, users);
}
}
public void AddMember(IPagedCollection<IDirectoryObject> membersResoult, List<string> users)
{
var members = membersResoult.CurrentPage;
foreach (var obj in members)
{
var _user = obj as Microsoft.Azure.ActiveDirectory.GraphClient.User;
if (_user != null)
users.Add(_user.DisplayName);
else
{
var groupMember = obj as Microsoft.Azure.ActiveDirectory.GraphClient.Group;
if (groupMember != null)
{
GetMembersRecursively(GetGroupById(groupMember.ObjectId), users);
}
}
}
}
GraphHelperクラス:
class GraphHelper
{
public static ActiveDirectoryClient CreateGraphClient(string accessToken, string tenantId)
{
string graphResourceId = "https://graph.windows.net";
Uri servicePointUri = new Uri(graphResourceId);
Uri serviceRoot = new Uri(servicePointUri, tenantId);
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async() => await Task.FromResult(accessToken));
return activeDirectoryClient;
}
}
あなたの質問を指定していただけますか?あなたは何を試しましたか? Azure Graph REST API、またはラッパーを使用していますか? –
@JanKruse私の質問は、私の最後の文です(疑問符で終わります)。私は "Building Residents"グループのメンバーに問い合わせることを試みました(その前の文で指定されています)。 Azure Graph APIについて(タイトルで指定されているように)私は話しています。 – Progger
REST経由でAPIにクエリを実行するか、C#ライブラリのようなラッパーを使用しますか?あなたが説明しようとしているデータの構造を理解していません。それはAADグループ、Office 365グループ、セキュリティグループについてですか?私は正しく理解していますか?グループのメンバーであるすべてのAADユーザーオブジェクトが必要ですか?サンプルデータ、既に試したクエリ、対応するAPIレスポンスを提供できますか? –