我正在使用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的重复。存在一种解决方法,但不解释为什么该方法不起作用。
答案 0 :(得分:0)
如果您的ServiceRoot值确实与ActiveDirectoryClient的实例化以及您对AuthenticationContext的调用相同,那么这可能是您问题的根源。
实例化ActiveDirectoryClient应该使用调用AuthenticationContext https://login.microsoftonline.com/
虽然这不会在方法挂起或成功请求中表现出来,但这是我必须对代码进行的唯一更改才能为我工作,否则会返回Not Found错误。
答案 1 :(得分:0)
使用“结果”属性时,我在使用Graph Api库时遇到了类似的问题,请尝试将您的调用更改为: -
IEnumerable<string> groups = await GetGroupsAsync(activeDirectoryClient, "currentUserObjectId");