0

我试图通过应用程序访问流程搜索我自己和第三方Azure Active Directoriy中的用户 我使用以下内容获得有效的令牌。Authorization_RequestDenied:没有足够的权限来完成操作。”错误与应用程序,只在第三方AD

string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com"); 
AuthenticationContext authContext = new AuthenticationContext(authority); 
ClientCredential clientCredential = new ClientCredential(<clientId>, <appKey>); 

AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net" , clientCredential); 
string TokenForApplication = result.AccessToken; 

我用这个方法来搜索用户给定的名称。

public async Task<List<IUser>> UsersSearch(IActiveDirectoryClient client, string searchString) 
{ 
    List<IUser> usersList = null; 
    IPagedCollection<IUser> searchResults = null; 

    IUserCollection userCollection = client.Users; 
    searchResults = await userCollection.Where(user => 
     user.UserPrincipalName.StartsWith(searchString) || 
     user.GivenName.StartsWith(searchString)).Take(10).ExecuteAsync(); 
    usersList = searchResults.CurrentPage.ToList(); 

    return usersList; 
} 

这一切工作正常在Azure的AD我第一次安装的应用程序。

但是,当我尝试使用该应用程序在另一个Azure的活动目录我的错误:Authorization_RequestDenied: Insufficient privileges to complete the operation."

我在原来的Azure的AD我已经设置我需要的应用程序访问图形API和搜索的所有权限用户:

permissions on my own AAD

在第三方Azure的AD我已经通过管理流走了,并授予该应用程序所需的所有权限:

Permissions for app on Third party AAD

至于我可以看到我得到一个有效的令牌给每个Azure的广告,但我不断收到同样的错误时,我尝试访问第三方Azure的AD。

我改变什么AD,我试图访问的方法是在

string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com"); 

改变<AD>我把一切相同。

回答

1

从您的屏幕截图中,选定的权限适用于Microsoft Graph API(https://graph.microsoft.com),但根据您的代码,您将获取Azure AD图形API(https://graph.windows.net)的令牌。

如果您想使用Azure AD图形API,您应该在多租户应用程序的Required permissions刀片中添加Windows Azure Active Directory的权限,并在其他AAD中执行管理员同意。

如果你想使用Microsoft Graph API,你应该修改你的代码,使用https://graph.microsoft.com而不是https://graph.windows.net

+0

谢谢你,我没有,我使用Azure的AD图形API真正实现! 如果我改变了终点,我得到“错误请求”:“无效的版本”,这是我收集将意味着我需要改变我的代码,使用了不同的电话? – Jeppe

+0

您要使用Azure的AD图形API或微软图形API?您的sdk似乎使用azure广告图形api。 –

+0

是的,我从我目前使用Azure的AD图形API你的答案的理解。我想使用Microsoft图形API。 – Jeppe

相关问题