我的应用程序需要哪些权限才能将用户添加到组?

What permissions does my app need before it can add users to groups?

场景:应用程序中的管理员用户(在 AD 上的特定组中)向应用程序的数据库中添加新服务提供商的新记录。此过程向添加的人的电子邮件地址发送邀请,并且[应该]将该新来宾用户添加到 AD 上与其在应用程序中的功能及其地理位置相关的一组特定组。

到目前为止,几乎所有事情都做得很好,但是当要将新的来宾用户添加到组时,我收到以下错误:

Microsoft.Graph.ServiceException: 'Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    Inner error:
    AdditionalData:
        date: 2021-12-13T10:50:05
        request-id: <redacted>
        client-request-id: <redacted>
ClientRequestId: <redacted>'

我已获得管理员同意授予的以下权限:

这是我的代码 - 我删除了敏感信息:

private async Task CreateUserInvitationAsync()
{
    // Send the invitation.
    var invitation = new Invitation
    {
        InvitedUserEmailAddress = Provider.Email,
        InviteRedirectUrl = $"{Request.Scheme}://{Request.Host}{this.Request.PathBase}/",
        SendInvitationMessage = true,
        InvitedUserType = "Guest"
    };
    var result = await graphClient.Invitations
        .Request()
        .AddAsync(invitation);

    // Update the provider to associate the Provider record with the new user id.
    var userId = result.InvitedUser.Id;
    var provider = await context.Providers.FindAsync(Provider.Id);
    provider.UserId = userId;

    // Add the user to groups so that role applications happen as necessary.
    var directoryObject = new DirectoryObject
    {
        Id = userId
    };

    string region = provider.Region switch
    {
        Region.Cpt => config["redacted"],
        Region.Dbn => config["redacted"],
        _ => config["redacted"]
    };

    var groups = new List<string>
    {
        region,
        config["redacted"]
    };

    foreach (var group in groups)
    {
        await graphClient.Groups[group].Members.References
            .Request()
            .AddAsync(directoryObject);
    }
}

按照下面的 MS 文档页面所示,最初使用委托权限构建了这个,我更新了我的权限,使其更符合我们 Azure 上的另一个应用程序(由其他人开发),该应用程序可以运行,但上面设置的权限和在下面的 link 中指出的一个工作 - 在这两种情况下错误仍然存​​在。

https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http

那么我缺少什么权限?

TL;DRGroupMember.ReadWrite.All 设置为应用程序的 Application 权限,然后将应用程序添加到组中您正在分配成员。


这不是权限问题。

当我找到这个解决方案时,我已将 GroupMember.ReadWrite.All 作为 Application 权限添加到应用程序并获得管理员的同意,但错误仍然存​​在。

注意 GroupMember.ReadWrite.All 的权限说明:

Allows the app to list groups, read basic properties, read and update the membership of the groups this app has access to without a signed-in user. Group properties and owners cannot be updated and groups cannot be deleted.

特别感兴趣“此应用有权访问的组”

事实证明我对此的理解是正确的,因为该应用程序需要成为相关组的成员才能将用户添加到该组。