Как настроить новое приложение 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 ответ:
Я бы предложил вместо этого использовать новые командлеты 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