Имейте в виду, что "манифест", отображаемый на портале Azure AD, представляет собой не что иное, как слегка ограниченное представление объекта Application, представляемое API-интерфейсом Azure AD Graph: https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference#application-entity
Azure AD PowerShell (модуль AzureAD) - это простая оболочка одного и того же API.New‑AzureADApplication
делает POST
на /applications
, Get‑AzureADApplication
делает GET
, Set‑AzureADApplication
делает PATCH
, а Remove‑AzureADApplication
делает DELETE
.
Итак, сохраняяпомните следующий входной файл app-roles.json
:
[
{
"allowedMemberTypes": [ "Application" ],
"description": "Read some things in the My App service",
"displayName": "Read some things",
"id": "b2b2e6de-bb42-41b4-92db-fda89218b5ae",
"isEnabled": true,
"value": "Things.Read.Some"
},
{
"allowedMemberTypes": [ "User" ],
"description": "Super admin role for My App",
"displayName": "My App Super Admin",
"id": "a01eca9b-0c55-411d-aa5f-d8cfdbadf500",
"isEnabled": true,
"value": "super_admin"
}
]
. Вы можете использовать следующий скрипт для установки этих ролей приложения в приложении (обратите внимание, что при этом будут удалены все существующие роли приложения, что приведет кошибка в том, что они ранее не были отключены):
$appId = "{app-id}"
$pathToAppRolesJson = "app-roles.json"
# Read all desired app roles from JSON file
$appRolesFromJson = Get-Content -Path $pathToAppRolesJson -Raw | ConvertFrom-Json
# Build a new list of Azure AD PowerShell AppRole objects
$appRolesForApp = @()
$appRolesFromJson | ForEach-Object {
# Create new Azure AD PowerShell AppRole object for each app role
$appRole = New-Object "Microsoft.Open.AzureAD.Model.AppRole"
$appRole.AllowedMemberTypes = $_.allowedMemberTypes
$appRole.Description = $_.description
$appRole.DisplayName = $_.displayName
$appRole.Id = $_.id
$appRole.IsEnabled = $_.isEnabled
$appRole.Value = $_.value
# Add to the list of app roles
$appRolesForApp += $appRole
}
# Update the Application object with the new list of app roles
$app = Get-AzureADApplication -Filter ("appId eq '{0}'" -f $appId)
Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $appRolesForApp