Microsoft не предоставляет API для предоставления согласия администратора для Azure участника приложения / службы AD. Вы можете проголосовать за это сообщение в User Voice.
Существует обходной путь :
Вызов Microsoft Graph API Создание делегированного разрешения и Предоставьте appRoleAssignment принципалу службы в Powershell.
Пример для справки:
$context = Get-AzContext
$ResourceAppIdURI = "https://graph.windows.net/"
$ResourceGraphURI = "https://graph.microsoft.com/"
$token = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, $ResourceAppIdURI).AccessToken
$graphToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, $ResourceGraphURI).AccessToken
$clientID = "d154cc56-f1a2-4906-9f26-bfb4756f9c20"
$resourceID = "08a1faff-51c1-4cbb-81c4-1bc11286da76"
$scopes = "Sites.Read.All User.Read User.Read.All User.ReadBasic.All"
$body = @{
clientId = $clientID
consentType = "AllPrincipals"
principalId = $null
resourceId = $resourceID
scope = $scopes
startTime = "2019-10-19T10:37:00Z"
expiryTime = "2020-10-19T10:37:00Z"
}
$apiUrl = "https://graph.microsoft.com/beta/oauth2PermissionGrants"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization = "Bearer $($graphToken)" } -Method POST -Body $($body | convertto-json) -ContentType "application/json"
$principalId = "d154cc56-f1a2-4906-9f26-bfb4756f9c20"
$body1 = @{
principalId = $principalId
resourceId = $resourceID
appRoleId = "df021288-bdef-4463-88db-98f22de89214"
}
$apiUrl1 = "https://graph.microsoft.com/beta/servicePrincipals/$($principalId)/appRoleAssignedTo"
Invoke-RestMethod -Uri $apiUrl1 -Headers @{Authorization = "Bearer $($graphToken)" } -Method POST -Body $($body1 | convertto-json) -ContentType "application/json"
Для первого вызова https://graph.microsoft.com/beta/oauth2PermissionGrants
:
clientID
- это идентификатор объекта субъекта-службы (не Azure приложения AD), вы можете найти его, используя Get-AzADServicePrincipal . Вы также можете найти его на Azure Портале - Azure Active Directory - Корпоративные приложения , найдите имя своего Azure приложения AD.
resouceID
- идентификатор объекта субъекта-службы Microsoft Graph. Вы можете найти в разделе Корпоративные приложения (введите «00000003-0000-0000-c000-000000000000»).
scopes
- это делегированные разрешения , которые вы хотите предоставить согласие администратора.
Для второго звонка https://graph.microsoft.com/beta/servicePrincipals/$($principalId)/appRoleAssignedTo
:
principalId
совпадает с clientID
, упомянутым выше.
appRoleId
- это разрешение приложения идентификатор