Рекламное приложение Azure - обновление манифеста программным способом

Я пытаюсь найти способ обновить манифест зарегистрированного приложения Azure Ad с помощью powershell, используя файл json.

Файл Json содержит все роли приложения, и я хотел бы просто вставить роли приложения: [] прямо в скобки роли приложения

Есть ли способ добиться этого через Power Shell или CLI?

4 ответа

Решение

Да, вы можете обновить манифест приложения Azure AD через PowerShell.

В частности, чтобы добавить роли приложения, вот сценарий PowerShell.

Если вы пытаетесь сделать это при создании нового приложения, просто используйте New-AzureADApplication вместо Set-AzureADApplication,

Connect-AzureAD -TenantId <Tenant GUID>

# Create an application role of given name and description
Function CreateAppRole([string] $Name, [string] $Description)
{
    $appRole = New-Object Microsoft.Open.AzureAD.Model.AppRole
    $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string]
    $appRole.AllowedMemberTypes.Add("User");
    $appRole.DisplayName = $Name
    $appRole.Id = New-Guid
    $appRole.IsEnabled = $true
    $appRole.Description = $Description
    $appRole.Value = $Name;
    return $appRole
}

# ObjectId for application from App Registrations in your AzureAD
$appObjectId = "<Your Application Object Id>"
$app = Get-AzureADApplication -ObjectId $appObjectId
$appRoles = $app.AppRoles
Write-Host "App Roles before addition of new role.."
Write-Host $appRoles

$newRole = CreateAppRole -Name "MyNewApplicationRole" -Description "This is my new Application Role"
$appRoles.Add($newRole)

Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $appRoles

Помните, что "манифест", отображаемый на портале Azure AD, представляет собой не что иное, как слегка ограниченное представление объекта Application, представленное API-интерфейсом Azure AD Graph: https://msdn.microsoft.com/ Библиотека / Azure / Ad / графика / API / объект-и-комплекс типа ссылка # приложение-объект

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

Команда клиента Azure

az ad app update --id e042ec79-34cd-498f-9d9f-123456781234 --app-roles @manifest.json

manifest.json

[{
    "allowedMemberTypes": [
      "User"
    ],
    "description": "Approvers can mark documents as approved",
    "displayName": "Approver",
    "isEnabled": "true",
    "value": "approver"
}]

Дополнительная информация в документации по azure cli

попробовал эту команду az ad app update --id e042ec79-34cd-498f-9d9f-123456781234 --app-roles @manifest.json, но в итоге получил ошибку ниже:

Оператор разбивки "@" нельзя использовать для ссылки на переменные в выражении. @manifest можно использовать только как аргумент команды. Чтобы ссылаться на переменные в выражении, используйте '$manifest'.

Другие вопросы по тегам