获取Azure Graph API库中的成员组挂起

时间:2016-02-11 22:23:48

标签: azure-active-directory adal azure-ad-graph-api

我正在使用Microsoft.Azure.ActiveDirectory.GraphClient版本2.1.1.0来获取我的用户所属的组。 方法调用如下:

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(
                                        new Uri(GraphUrl),
                                        async () => await GetAppTokenAsync());

IEnumerable<string> groups = GetGroupsAsync(activeDirectoryClient, "currentUserObjectId").Result;

private static async Task<IEnumerable<string>> GetGroupsAsync(ActiveDirectoryClient activeDirectoryClient, string currentUserObjectId )
{
    return await activeDirectoryClient.Users.GetByObjectId(currentUserObjectId).GetMemberGroupsAsync(true);

}

private static async Task<string> GetAppTokenAsync()
{
            var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(ServiceRoot);
            var token = await authContext.AcquireTokenAsync(GraphUrl,new ClientCredential("clientId", "clientSecret"));
            return token.AccessToken;
}

然而,即使在Fiddler中我看到请求已成功并包含正确的组,该方法仍会挂起。

我的问题是Azure ActiveDirectory Graph API GraphClient not returning AD Groups的重复。存在一种解决方法,但不解释为什么该方法不起作用。

2 个答案:

答案 0 :(得分:0)

如果您的ServiceRoot值确实与ActiveDirectoryClient的实例化以及您对AuthenticationContext的调用相同,那么这可能是您问题的根源。

应使用https://graph.windows.net/

实例化ActiveDirectoryClient

应该使用调用AuthenticationContext https://login.microsoftonline.com/

虽然这不会在方法挂起或成功请求中表现出来,但这是我必须对代码进行的唯一更改才能为我工作,否则会返回Not Found错误。

答案 1 :(得分:0)

使用“结果”属性时,我在使用Graph Api库时遇到了类似的问题,请尝试将您的调用更改为: -

IEnumerable<string> groups = await GetGroupsAsync(activeDirectoryClient, "currentUserObjectId");