以编程方式将用户添加为AzureAD中的组所有者

时间:2019-07-29 08:38:20

标签: azure azure-active-directory

是否有用于AzureAD的API,允许组所有者将用户添加到其拥有的组中?

使用Graph api的外观需要征得管理员同意(授予管理员权限),因此可以提供对用户所拥有的网上论坛以外的其他用户的访问权限。我不想批准这个。

我也不想使用委派访问权限-不需要为组所有者(也许是服务主体吗?)的管理员在场,以便将用户添加到他们自己的组中?

2 个答案:

答案 0 :(得分:2)

我有一些有趣的发现。

A)如果将服务主体设置为组的所有者,并且想使用服务主体来管理组,则必须添加并授予Azure AD Graph API必要的权限。

B)如果将用户设置为组的所有者,则可以使用公共客户端(1b730954-1685-4b74-9bfd-dac224a7b894)和用户凭据来获取令牌,然后将AAD图形API调用为用户来管理组。

在这里,我使用PowerShell发出http请求。您可以使用其他程序语言。

# Get token for Azure AD Graph  
$uri = "https://login.microsoftonline.com/{tenant_name_or_id, for example: hanxia.onmicrosoft.com}/oauth2/token"
$body = @{grant_type='password';resource='https://graph.windows.net';client_id='1b730954-1685-4b74-9bfd-dac224a7b894';username='normaluser@hanxia.onmicrosoft.com';password='a*******7'}
$result = Invoke-RestMethod -Method Post -Uri $uri -Body $body
$accessToken = $result.access_token

# Azure AD Graph. Get group information
$tenantId = "e4c9ab4e-bd27-40d5-8459-230ba2a757fb"
$groupId = "f37d06f2-e26f-45f9-b9b1-da13d0b79ea7"
$apiVersion = "1.6"

$result = Invoke-WebRequest -Method Get `
                    -Uri ("https://graph.windows.net/" + $tenantId + "/groups/" + $groupId +"?api-version=" + $apiVersion) `
                    -Headers @{ "Authorization" = "Bearer " + $accessToken }
$result.Content | ConvertFrom-Json | ConvertTo-Json

# Azure AD Graph. Get users in group
$result = Invoke-WebRequest -Method Get `
                    -Uri ("https://graph.windows.net/" + $tenantId + "/groups/" + $groupId +"/`$links/members" +"?api-version=" + $apiVersion) `
                    -Headers @{ "Authorization" = "Bearer " + $accessToken }
$result.Content | ConvertFrom-Json | ConvertTo-Json

# Azure AD Graph. Add user to group
$userObject = @{"url" = "https://graph.windows.net/e4c9ab4e-bd27-40d5-8459-230ba2a757fb/directoryObjects/3f43b292-adac-48f9-a623-ee76ca9c7174"} | ConvertTo-Json
$result = Invoke-WebRequest -Method Post `
                            -Uri ("https://graph.windows.net/" + $tenantId + "/groups/" + $groupId +"/`$links/members" +"?api-version=" + $apiVersion) `
                            -Headers @{ "Authorization" = "Bearer " + $accessToken; "Content-Type" = "application/json" } `
                            -Body $userObject
if($result.StatusCode -eq 204){ Write-Host "User added" }

注意:

  1. 1b730954-1685-4b74-9bfd-dac224a7b894 是Microsoft为每个租户提供的常见应用程序。

  2. API参考:Operations on groups | AAD Graph API reference

答案 1 :(得分:-1)

需要同意的原因是,虽然组所有者有权将用户添加到组中,但默认情况下没有应用程序。委派的权限还授予应用程序代表用户修改用户组的权限,具体取决于用户的权限。通常是更好的方法。应用程序权限授予应用程序本身在没有用户的情况下执行操作的权限。这通常太多了,但是有用例。

您需要至少向应用程序授予委派的权限,以便它可以代表用户进行修改。