Как настроить новое приложение Azure AD с помощью Powershell?


Я создаю новое приложение Azure AD с помощью Powershell. Я успешно создал приложение и назначил client_secret следующую команду PowerShell:

$app = New-AzureRmADApplication -DisplayName "PowerShell-Test-POC2" -HomePage "http://www.microsoft.com" -IdentifierUris "http://kcuraonedrive.onmicrosoft.com/PowerShell-Test-POC2" -AvailableToOtherTenants $true

Мой вопрос заключается в том, как настроить это недавно созданное приложение с помощью Powershell (т. е. необходимые разрешения и URL-адреса ответов)?

1 2

1 ответ:

Я бы предложил вместо этого использовать новые командлеты Azure AD v2: https://docs.microsoft.com/en-us/powershell/azuread/v2/azureactivedirectory .

Они более универсальны, чем ARM, и позволяют вам определять такие вещи, как ключи, отвечать на URL-адреса более легко.

Например, чтобы добавить URL-адреса ответов:

Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -ReplyUrls @("https://localhost:8080","https://localhost:8081")

Чтобы добавить требуемое разрешение, вы должны выяснить пару вещей. Субъекту службы, для которого определены разрешения, потребуется его идентификатор appId. (Я нашел Microsoft Graph API principal от моего клиента), то вам нужно найти appRole или oauth2Permission, которые вы хотите потребовать. Вам понадобится его идентификатор.

Затем добавить делегированное разрешение:

$req = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$acc1 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "e1fe6dd8-ba31-4d61-89e7-88639da4683d","Scope"
$acc2 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "798ee544-9d2d-430c-a058-570e29e34338","Role"
$req.ResourceAccess = $acc1,$acc2
$req.ResourceAppId = "00000003-0000-0000-c000-000000000000"
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -RequiredResourceAccess $req

ResourceAppId - это идентификатор участника службы для Microsoft Graph API. Объект ResourceAccess в этом случае содержит два требования. Первый содержит идентификатор oauth2Permission, который я хочу потребовать, а также указание, что это делегированное разрешение. Второй содержит разрешение приложения, id-это идентификатор объекта appRole.

Scope = делегированное разрешение

Роль = разрешение Приложения

Чтобы найти нужного вам субъекта обслуживания, вы можете запустить:

Get-AzureADServicePrincipal
ObjectId                             AppId                                DisplayName
--------                             -----                                -----------
f004dde9-b40f-4259-91be-e257009a444a 00000003-0000-0000-c000-000000000000 Microsoft Graph

Затем получите Принципала и перечислите делегированные разрешения:

$msGraph = Get-AzureADServicePrincipal -ObjectId f004dde9-b40f-4259-91be-e257009a444a
$msGraph.Oauth2Permissions | select Id,AdminConsentDisplayName,Value
Id                                   AdminConsentDisplayName                                           Value
--                                   -----------------------                                           -----
e1fe6dd8-ba31-4d61-89e7-88639da4683d Sign in and read user profile                                     User.Read

Или если вам нужно разрешение приложения:

$msGraph.AppRoles | select Id,DisplayName,Value
Id                                   DisplayName                                            Value
--                                   -----------                                            -----
798ee544-9d2d-430c-a058-570e29e34338 Read calendars in all mailboxes                        Calendars.Read

Идентификатор является важным.

Для скриптов хорошо то, что идентификатор приложения для MS services всегда одинакова. Идентификаторы разрешений также одинаковы у всех арендаторов. Так, например:

  • Microsoft Graph API
    • AppId: 00000003-0000-0000-c000-000000000000
  • Azure AD Graph API
    • AppId: 00000002-0000-0000-c000-000000000000