【发布时间】: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 权限的样子。
总的来说,似乎是权限问题,不确定需要添加哪些权限。
【问题讨论】:
-
如屏幕截图所示,读/写操作需要未经授权的管理员同意。请在获得管理员同意后重试您的操作。
-
一旦我授予权限,它确实有效。请添加您的评论作为答案并简要说明管理员同意,我会接受。
标签: azure azure-active-directory microsoft-graph-api azure-ad-b2c azure-ad-graph-api