Azure AD - 权限不足,无法执行应用程序“00000003-0000-0000-c000-000000000000”请求的操作

Azure AD - Insufficient privileges to perform requested operation by the application '00000003-0000-0000-c000-000000000000'

我正在执行一项任务,应该邀请用户并将他们添加到我的 Azure 活动目录列表中。在能够访问我的应用程序之前,受邀用户应通过电子邮件进行验证。这是我使用的代码:

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(_config["AzureAd:ClientId"])
    .WithTenantId(_config["AzureAd:TenantId"])
    .WithClientSecret(_config["AzureAd:ClientSecret"])
    .Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var invitation = new Invitation
{
    InvitedUserEmailAddress = "mail@hotmail.com",
    InviteRedirectUrl = "https://url.com/",
    SendInvitationMessage = true

await graphClient.Invitations
    .Request()
    .AddAsync(invitation);

我在互联网上的某个地方找到了这个片段,从评论来看,它似乎有效。但是,当我 运行 我的应用程序并调用此功能时,我收到一条错误消息

Code: Unauthorized Message: Insufficient privileges to perform requested operation by the application '00000003-0000-0000-c000-000000000000'. ControllerName=MSGraphInviteAPI, ActionName=CreateInvite, URL absolute path=/...

在API权限中,我在Microsoft Graph下有一个User.Invite.All权限。除此之外,我还有 User.Read 但我认为目前与此无关。你们中的一些人是否偶然发现了这样的错误并设法成功解决了它?如果是这样,您能否分享解决方案?

您正在使用 client_credentials 流。这意味着执行此任务的不是用户,而是服务凭证。您需要提供 Application permissions,而不是您设置的内容 - Delegated Permissions.

如果您没有看到 Application Permissions,那是因为您创建了 Azure AD B2C 应用程序注册。相反,使用第一个选项 Accounts in this organizational directory only (Contoso only - Single tenant) .

创建 App Reg

这些是您需要的文档:

这是当今 AAD 和 AAD B2C 租户的正确方法。