2017-02-10 4 views
0

Я создаю новое приложение Azure AD через Powershell. Я успешно создали приложение и присвоении client_secret со следующей PowerShell командой:Как настроить новое приложение Azure AD через 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-адреса)?

ответ

6

Я бы предпочел скорее использовать новые командлеты 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. (Я нашел принципала API Graph Graph от моего арендатора). Затем вам нужно найти 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 является APPID сервисного принципала для API Microsoft Graph. Объект 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 всегда одинаковый. Идентификаторы разрешений также одинаковы для всех арендаторов.Так, например:

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

спасибо, что ответили. Не могли бы вы предоставить дополнительную информацию о линии, где вы сказали: «Тогда вам нужно найти appRole или oauth2Permissions, которые вы хотите требовать» *? – jdave

+0

См. Мое редактирование. Я добавил некоторые примеры команд, которые я использовал для получения разрешений Microsoft Graph API. – juunas

+0

@junnas - ах спасибо! Что делать, если я создаю совершенно новое приложение и нет принципа обслуживания, на котором определены разрешения? Если бы я хотел создать новые разрешения для приложения - есть ли другой поток? – jdave

Смежные вопросы