【问题标题】:Authorization_RequestDenied. Insufficient privileges to complete the operation. Graph APIAuthorization_RequestDenied。权限不足,无法完成操作。图形 API
【发布时间】:2021-07-27 21:59:04
【问题描述】:

在通过 Api 在 Web 应用程序上完成注册后,我必须为用户更新自定义属性。 Api 具有使用 GraphServiceClient 构造请求和更新的逻辑。当我运行代码时抛出异常

Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation.
Inner error:
   AdditionalData:
   date: 2021-07-27T17:16:26
   request-id:  xxxx-xx-xxxx-xx
   client-request-id:  xxxx-xx-xxxx-xx
ClientRequestId: xxxx-xx-xxxx-xx

这就是代码看起来很标准的样子

 var additionalData = new Dictionary<string, object>()
 {
   {  helper.GetName(configuration.GetValue<string>("ClientId"),"Id"), Id } 
 };

await graphClient
        .Users[userId]
        .Request()
        .UpdateAsync(new User { AdditionalData = additionalData }); 

Startup 类中的 Graph Api 配置如下所示

public static IServiceCollection AddGraphComponent(this IServiceCollection services, IConfiguration configuration)
{
    IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
        .Create(configuration.GetValue<string>("ClientId"))
        .WithTenantId(configuration.GetValue<string>("TenantId"))
        .WithClientSecret(configuration.GetValue<string>("ClientSecret"))
        .Build();

    ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
        
    services.AddSingleton<GraphServiceClient>(sp =>
    {
        return new GraphServiceClient(authenticationProvider);
    });

    return services;
}

根据提供的文档here Client Credential 提供者似乎是我在开始时描述的场景的正确提供者。 WebApp -> X-Api -> AzureB2C

这就是 X-Api | API 权限的样子。

这是 b2c 扩展应用程序 | API 权限看起来像

总的来说,似乎是权限问题,不确定需要添加哪些权限。

【问题讨论】:

  • 如屏幕截图所示,读/写操作需要未经授权的管理员同意。请在获得管理员同意后重试您的操作。
  • 一旦我授予权限,它确实有效。请添加您的评论作为答案并简要说明管理员同意,我会接受。

标签: azure azure-active-directory microsoft-graph-api azure-ad-b2c azure-ad-graph-api


【解决方案1】:

您收到此错误的原因是您在应用程序的上下文中(而不是作为用户)执行 Graph API 操作,或者换句话说,权限是 Application Permission 而不是 Delegated Permission 和管理员未同意执行这些操作。管理员需要在租户范围内同意应用程序权限。一旦管理员同意,错误就不会出现。

要了解有关委派和应用程序权限的更多信息,请参阅:https://docs.microsoft.com/en-us/graph/auth/auth-concepts#delegated-and-application-permissions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 2017-11-03
    • 2018-01-24
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多