Azure AD에서 사용자 그룹 정보를 검색하려고합니다.Azure ActiveDirectory Graph API GraphClient가 AD 그룹을 반환하지 않음
I 성공적를 할 생각이
- Microsoft.Azure.ActiveDirectory.GraphClient
- Microsoft.IdentityModel.Clients.ActiveDirectory에게 2.13.112191810
을 달성하기 위해 다음과 같은 그래프 API 패키지를 사용하여 Azure Graph API에서 사용자 정보를 검색합니다.
그러나 사용자의 그룹을 검색하기 위해이 메서드를 실행하면 Fiddler는 그룹 정보가 들어있는 JSON 부분에 성공적인 HTTP 200 응답을 표시하지만 메서드 자체는 IEnumerable과 함께 반환되지 않습니다.
IEnumerable<string> groups = user.GetMemberGroupsAsync(false).Result.ToList();
이 비동기 요청에서 코드가 반환되지 않는 것 같습니다.
결과 파이프 라인이 멈추는 동안 빈 페이지가 나타납니다.
전체 코드
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (!incomingPrincipal.Identity.IsAuthenticated == true &&
_authorizationService.IdentityRegistered(incomingPrincipal.Identity.Name))
{
return base.Authenticate(resourceName, incomingPrincipal);
}
_authorizationService.AddClaimsToIdentity(((ClaimsIdentity) incomingPrincipal.Identity));
Claim tenantClaim = incomingPrincipal.FindFirst(TenantIdClaim);
if (tenantClaim == null)
{
throw new NotSupportedException("Tenant claim not available, role authentication is not supported");
}
string tenantId = tenantClaim.Value;
string authority = String.Format(CultureInfo.InvariantCulture, _aadInstance, _tenant);
Uri servicePointUri = new Uri("https://graph.windows.net");
ClientCredential clientCredential = new ClientCredential(_clientId, _password);
AuthenticationContext authContext = new AuthenticationContext(authority, true);
AuthenticationResult result = authContext.AcquireToken(servicePointUri.ToString(), clientCredential);
Token = result.AccessToken;
ActiveDirectoryClient activeDirectoryClient =
new ActiveDirectoryClient(new Uri(servicePointUri, tenantId),
async() => await AcquireTokenAsync());
IUser user = activeDirectoryClient
.Users
.Where(x => x.UserPrincipalName.Equals(incomingPrincipal.Identity.Name))
.ExecuteAsync()
.Result
.CurrentPage
.ToList()
.FirstOrDefault();
if (user == null)
{
throw new NotSupportedException("Unknown User.");
}
IEnumerable<string> groups = user.GetMemberGroupsAsync(false).Result.ToList();
return incomingPrincipal;
}
동일한 문제가 있습니다. 그러나 'memberOf'를 사용하는 위의 해결책은 자동 응답 목록, 즉 직접 회원 만 사용할 수 있습니다. 작동하지 않는'getMemberGroups' 함수가 추이적인 부분입니다. 각 그룹 그룹도 반복해야합니다. [doco] (https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/users-operations#UserFunctions)에서 "getMemberGroups 함수를 호출하여 사용자가 구성원 인 모든 그룹을 반환 할 수 있습니다 이 검사는 사용자가 직접 구성원 인 그룹 만 반환하는 memberOf 탐색 속성을 읽는 것과 달리 전 이적입니다. " – mgrowan
나는이 라이브러리로하려고했던 대부분의 호출에 동일한 문제가있다. Fiddler가 성공적인 요청이 이루어진 것으로 나타 났지만 항상 중단됩니다. –