Как мы уже писали, для регистрации приложений в AAD потребуется модуль AzureADPreview или AzureAD. Первый более новый и актуальный, содержит обновленные командлеты.

Тонкость заключается к том, что для OAuth приложений требуется добавить client secrets (ключи приложения). Но что еще более сложно, зачастую требуется предоставить доступ к различным ресурсам Azure AD, таким как чтение Active Directory или почтовых ящиков.

Доступ к ресурсам передается к виде массива, содержащего список ID прав и ресурсов. Чтобы получить список всех существующих Delegated прав, которые доступны в AAD, выполните следующую команду:

(Get-AzureADServicePrincipal -All $true | Where-Object {$_.DisplayName -eq "Windows Azure Active Directory"}).Oauth2Permissions

Для справки приведу примеры чаще всего встречающихся ID прав:

Id                      : 311a71cc-e848-46a1-bdf8-97ff7156d8e6
Value                   : User.Read

Id                      : cba73afc-7f69-4d86-8450-4978e04ecd1a
Value                   : User.ReadBasic.All

Id                      : 5778995a-e1bf-45b8-affa-663a9f3f4d04
Value                   : Directory.Read.All

Id                      : 6234d376-f627-4f0f-90e0-dff25c5211a3
Value                   : Group.Read.All

Id                      : c582532d-9d9e-43bd-a97c-2667a28ce295
Value                   : User.Read.All

Id                      : a42657d6-7f20-40e3-b6f0-cee03008a62a
Value                   : Directory.AccessAsUser.All

Вот пример создания приложения я несколькими ReplyURL и delegated правами User.Read и User.ReadBasic.All:

$ReplyUrls = New-Object 'System.Collections.Generic.List[String]'

[string[]]$a = "https://replyurl1.azurewebsites.net","https://replyurl2.azurewebsites.net/signin-oidc","https://localhost:9901","https://localhost:9901/signin-oidc"
$ReplyUrls.AddRange($a)

$ApiURI = "https://myapp.azurewebsites.net/"
$Homepage = "https://myapp.azurewebsites.net/"

$DisplayName = "My OAuth app"

$AzureAPIperms1 = New-Object -TypeName "microsoft.open.azuread.model.resourceAccess" -ArgumentList "311a71cc-e848-46a1-bdf8-97ff7156d8e6","Scope"
$AzureAPIperms2 = New-Object -TypeName "microsoft.open.azuread.model.resourceAccess" -ArgumentList "cba73afc-7f69-4d86-8450-4978e04ecd1a","Scope"
$AzureAPI = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$AzureAPI.ResourceAppId = "00000002-0000-0000-c000-000000000000"
$AzureAPI.ResourceAccess = $AzureAPIperms1,$AzureAPIperms2


# OAuth application
try {
    $NewOAuthapp = New-AzureADApplication -DisplayName $DisplayName -IdentifierUris $ApiURI -Homepage $Homepage -ReplyUrls $ReplyUrls -RequiredResourceAccess @($AzureAPI)
    }
catch { $_.Exception.Message; break }
$NewOAuthapp | select DisplayName,AppId,Homepage,ReplyUrls,IdentifierUris | fl

Теперь к зарегистрированному приложению необходимо добавить 2 ключа, к примеру, сроком на 1 год и на 2 года.

# Create and set access key
$key1 = New-AzureADApplicationPasswordCredential -ObjectId $NewOAuthapp.ObjectId -CustomKeyIdentifier "Key1" -EndDate (get-date).AddYears(1)
$key2 = New-AzureADApplicationPasswordCredential -ObjectId $NewOAuthapp.ObjectId -CustomKeyIdentifier "Key2" -EndDate (get-date).AddYears(2)
"key1 value is: $($key1.value)"
"key2 value is: $($key2.value)"

Ну и наконец, чтобы приложение правильно находилось и отображалось в портале в разделе All Applications, добавим к нему правильный тэг
WindowsAzureActiveDirectoryIntegratedApp:

$NewAppSPN = New-AzureADServicePrincipal -AppId $NewOAuthapp.AppId -Tags {WindowsAzureActiveDirectoryIntegratedApp}

Насколько полезен этот пост?

Кликните на звезду, чтобы оценить!

Средний рейтинг 0 / 5. Количество голосов: 0

Еще нет голосов. Будь первым!

Поделиться:
Помечено %1$s ,

Написано автором Александр Д.