图形API - 没有足够的权限来完成操作

j90*_*749 26 c# permissions azure azure-active-directory azure-ad-graph-api

使用时我尝试访问Graph Service Client时收到错误:

代码:Authorization_RequestDenied
消息:没有足够的权限来完成操作.

在研究此错误后,最常见的解决方案是设置API的权限.这已经完成,并具有读取基本/完整配置文件的权限.

我删除并重新添加了API.

下面是我的AzureAuthenticationProvider类中的代码,它继承自IAuthenticationProvider:

public class AzureAuthenticationProvider : IAuthenticationProvider
{
    private string _azureDomain = "myDevDom.onmicrosoft.com";

    public async Task AuthenticateRequestAsync(HttpRequestMessage request)
    {
        try
        {
            string clientId = "2b823c67-1b0d-4a10-a9e1-737142516f5q";
            string clientSecret = "xxxxxx";

            AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/" + _azureDomain + "/oauth2/token");

            ClientCredential credentials = new ClientCredential(clientId, clientSecret);

            AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);

            request.Headers.Add("Authorization", "Bearer " + authResult.AccessToken);
        }
        catch (Exception ex)
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试将客户端密钥更改为无效的ID并且它引发了错误,因此客户端密钥是正确的.我还尝试通过更改访问令牌来验证访问令牌是否有效,这也会返回错误.

上面的代码似乎工作正常.

以下是我尝试访问Azure AD的代码:

public async Task<IGraphServiceUsersCollectionPage> GetUsersByLastName(string lastname)  
{
    GraphServiceClient graphClient = new GraphServiceClient(new AzureAuthenticationProvider());
    string filter = String.Format("startswith(surname, '{0}')", lastname);
    IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().Filter(filter).GetAsync(); //Fails on this line
    return users;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助,并提前感谢您的帮助. azureADpermissionProperties

use*_*305 12

授予权限 确保为所有用户帐户单击" 授予权限 ",然后单击" 是".


Nan*_* Yu 10

请参考以下步骤:

  1. 从您的屏幕截图中,您似乎已授予(azure ad graph api)的Read and write directory data应用程序权限Windows Azure Active Directory.由于您使用的是microsoft graph(https://graph.microsoft.com/),因此您需要为以下内容授予应用程序权限Microsoft Graph: 在此输入图像描述

  2. 由于您是AAD的管理员,因此您可以通过Grant permission上面屏幕截图中显示的点击按钮为组织中的用户授予权限.

  3. 然后,您可以使用您的代码(客户端凭据流来获取令牌)和查询用户信息.如果您检查azure广告发出的访问令牌中的声明,则可以在声明中找到Directory.Read.All权限roles.


Hon*_* P. 7

对我来说,解决这个问题的关键是提示:

要将Graph API与B2C租户一起使用,您需要使用Azure门户中的通用应用程序注册菜单(所有服务,默认情况下不是收藏的星号)注册专用应用程序,而不是Azure AD B2C的应用程序菜单.您无法重用已在Azure AD B2C的"应用程序"菜单中注册的已存在的B2C应用程序.

有关详细信息,请参阅AD B2C aPI访问演示页面


小智 5

就我而言,删除用户不起作用。我采取了以下步骤,它开始为我工作。

Azure Active Directory > Roles and administrators > Click on 'User administrator' > click on '+ Add assignment' to add your app。(即使用 AAD Graph REST API 与 Azure Active Directory 交互的控制台应用程序)。

希望它可以帮助某人。