Authorization_RequestDenied:权限不足,无法完成操作。”应用程序错误,仅在第三方 AD 上

Authorization_RequestDenied: Insufficient privileges to complete the operation." error with app, only on thirdparty AD

我正在尝试通过应用程序访问流程在我自己和第三方 Azure Active Directory 中搜索用户。 我使用以下方法获取有效令牌。

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 和搜索用户所需的所有权限:

在第三方 Azure AD 中,我完成了管理流程并授予应用程序所有需要的权限:

据我所知,我获得了每个 Azure AD 的有效令牌,但每当我尝试访问第三方 Azure AD 时,我总是遇到同样的错误。

我更改尝试访问的 AD 的方法是在

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

我保持其他一切不变。

根据您的屏幕截图,所选权限适用于 Microsoft Graph API(https://graph.microsoft.com) , but according to your code , you are acquiring token for Azure AD Graph api(https://graph.windows.net)。

如果您想使用 Azure AD Graph api,您应该在 multi-tenant 应用程序的 Required permissions blade 中添加 Windows Azure Active Directory 的权限,并且在其他 AAD 中获得管理员同意。

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