사용자의 그룹 구성원에 대해 Azure AD 그래프 API를 쿼리하고 있습니다. 쿼리를 잘 만들 수 있지만 결과는 사용자가 직접 속한 그룹 일뿐입니다. 중첩 그룹은 나열되지 않습니다.Azure AD Graph API 사용자 구성원 중첩 된 그룹
사용자가 특정 그룹에 속하는지 알아 내려고하지만, 100 개가 넘는 API 호출을 알아낼 필요가 없도록 만들려고하지 않습니다. (즉, 사용자가 GroupD의 구성원 인 GroupC의 구성원 인 GroupB의 구성원 인 GroupA에 속해 있습니다 .B, C 및 D 그룹은 기술적으로 속해 있더라도 사용자의 그룹 목록에 나타나지 않습니다 - 그룹 A 만).
하나의 API 호출에서 다른 그룹 구성원을 얻는 방법이 있습니까? Windows 통합 인증을 사용할 때 IsInRole (GroupD)이 true를 반환했을 것입니다. 하지만 Azure AD 인증에서는이 기능을 사용할 수 없으며 IsInRole을 다시 구현하기위한 코드를 가지고있는 게시에서는 단순히 내포 된 그룹을 수행하지 않는 user.memberOf와 동일한 호출을 수행합니다.
참고로이 번호는 전화를 걸 때 사용하는 코드입니다.
var client = AuthenticationHelper.GetActiveDirectoryClient();
var user = await client.Users.GetByObjectId(objectId).ExecuteAsync();
var userFetcher = (IUserFetcher)user;
var pagedCollection = await userFetcher.MemberOf.ExecuteAsync();
do
{
var directoryObjects = pagedCollection.CurrentPage.ToList();
foreach (var group in directoryObjects.OfType<Group>().Select(directoryObject => directoryObject))
{
groupMembership.Add(group);
}
pagedCollection = await pagedCollection.GetNextPageAsync();
}
while (pagedCollection != null && pagedCollection.MorePagesAvailable);
나를위한 첫 번째 제안이 효과가있었습니다. 고맙습니다. 온 - 프레미 (on-prem) AD가 우리의 하늘색 AD에 동기화되고 우리는 우리의 ADFS를 통해 다시 OpenID를 사용하여 하늘색 AD에 대해 인증하므로 우리는 하늘색 응용 프로그램에서 직접 역할을 할당하지 않습니다. 당사의 모든 그룹/역할은 온 - 사이트 광고에서 관리됩니다. –
"응용 프로그램에서 응용 프로그램 역할을 선언 할 수 있습니다. 관리자가 사용자 및 그룹에 지정할 수 있습니다." 이것은 금입니다! 왜 앱 개발자가 누군가 AD 버킷에 간섭하고, 그룹을 확인하고, 과도성에 대해 걱정해야합니까 ... 이것이 멀티 테넌트에서 작동할까요?, 그게 질문입니다. – LastTribunal