Рекомендуемый способ автоматизации деплимента экземпляра Azure AD B2C?
Каков рекомендуемый способ или механизм для автоматизации развертывания экземпляра Azure AD B2C?
- Можно ли использовать шаблон ARM? Если так, где я могу найти образец быстрого запуска?
- Можно ли это сделать программным способом, то есть с помощью PowerShell? Если да, где я могу найти образец?
Каков рекомендуемый способ автоматизации конфигурации экземпляра Azure AD B2C, например, настройка политик, регистрация приложений, возможно, даже создание начальных учетных записей?
- Можно ли использовать шаблон ARM для него? Если так, где я могу найти образец быстрого запуска?
- Можно ли это сделать программным способом, то есть с помощью PowerShell? Если так, где я могу найти образец?
Сценарий использования: настройка шаблона ARM или скрипта для развертывания (обновления) в нескольких средах.
Заранее спасибо ОливерБ
2 ответа
Теперь вы можете использовать API Microsoft Graph для управления настраиваемыми политиками и ключами политик. Документацию по API пользовательских политик можно найти здесь, а по ключам политик - здесь. Вы можете найти образцы здесь.
На сегодняшний день Azure AD B2C поддерживает командлеты PowerShell для настраиваемых политик.
Можно ли использовать шаблон ARM? Если так, где я могу найти образец быстрого запуска? Можно ли это сделать программным способом, то есть с помощью PowerShell? Если да, где я могу найти образец?
В настоящее время невозможно управлять политиками B2C программным способом. Эта функция в настоящее время находится в стадии разработки. Если это важно для вас, вы можете проголосовать за нее на этом форуме обратной связи, чтобы мы могли сообщить вам, когда она будет доступна для предварительного просмотра. Запрос о функции для программного приложения регистрации в этом форуме обратной связи.
Дополнительно. Если вы хотите получить некоторые образцы для вырезок Plicies Azure B2C, вы можете обратиться к этим образцам.
Надеюсь это поможет!
В настоящее время невозможно автоматизировать создание арендатора AAD B2C. Вы можете следовать этому руководству, чтобы создать арендатора BC:
Учебник. Создание клиента Azure Active Directory B2C.
С тех пор как пользовательские политики B2C стали GA, есть несколько новых ролей AAD, которые допускают некоторую автоматизацию:
Если вы хотите автоматизировать загрузку пользовательских политик (политики IEF), вы можете:
Создайте локального пользователя в Арендаторе B2C с
B2C IEF Policy Administrator
роль.создать
native
регистрация приложенияДобавить необходимые разрешения для ранее созданной регистрации приложения
Access directory as the signed in user
Предоставить разрешения
Graph API (бета-версия) предоставляет конечную точку для управления настраиваемыми политиками:
тип ресурса trustFrameworkPolicy
Вот скрипт, который я использую для загрузки пользовательских политик (Upload-B2C-CustomPolicies.ps1
):
Param(
[string] [Parameter(Mandatory = $true)] $b2cTenantName
, [string] [Parameter(Mandatory = $true)] $graphAppId
, [string] [Parameter(Mandatory = $true)] $userName
, [string] [Parameter(Mandatory = $true)] $userPassword
, [string[]] [Parameter(Mandatory = $true)] $filePaths
)
function Get-Accesstoken {
param (
[string] [Parameter(Mandatory = $true)] $b2cTenantName
, [string] [Parameter(Mandatory = $true)] $graphAppId
, [string] [Parameter(Mandatory = $true)] $userName
, [string] [Parameter(Mandatory = $true)] $userPassword
)
$accessTokenUrl = "https://login.microsoftonline.com/$b2cTenantName.onmicrosoft.com/oauth2/token"
$body = @{
grant_type = "password"
resource = "https://graph.microsoft.com"
username = "$username"
password = "$userPassword"
client_id = "$graphAppId"
}
$response = Invoke-RestMethod `
-Uri $accessTokenUrl `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body $body
return $response.access_token
}
function Set-Policy {
param (
[string] [Parameter(Mandatory = $true)] $policyUrl
, [string] [Parameter(Mandatory = $true)] $accessToken
, [string] [Parameter(Mandatory = $true)] $xml
)
$headers = @{
"Authorization" = "Bearer $accessToken";
}
Invoke-RestMethod `
-Uri $policyUrl `
-Method Put `
-Headers $headers `
-ContentType "application/xml" `
-Body $xml
}
Write-Host "Getting access token to call the graph api"
$accessToken = Get-Accesstoken -b2cTenantName $b2cTenantName -graphAppId $graphAppId -userName $userName -userPassword $userPassword
foreach ($filePath in $filePaths) {
try {
Write-Host "`nGetting file content from file path: $filePath"
$xml = Get-Content $filePath | Out-String
[xml]$xmlDoc = $xml
}
catch {
Write-Host "##vso[task.logissue type=error;]$filePath is an invalid xml file."
return
}
$policyId = $xmlDoc.TrustFrameworkPolicy.PolicyId
$policyUrl = "https://graph.microsoft.com/beta/trustframework/policies/$policyId/`$value"
Write-Host "Uploading policy with id: $policyId"
Set-Policy -policyUrl $policyUrl -accessToken $accessToken -xml $xml
}
Я выполняю сценарий так:
.\Upload-B2C-CustomPolicies.ps1 `
-b2cTenantName "my b2c tenant name" `
-graphAppId "app id of the previously created app registration" `
-userName "b2c local username with IEF policy admin role" `
-userPassword "b2c local user password with IEF policy admin role" `
-filePaths "full path of the TrustFrameworkBase.xml file", "full path of the TrustFrameworkExtension.xml file", "full path of the SignUpSingIn.xml file"
Пока не реализована возможность сделать это, вам просто нужно подробно описать процесс установки с пошаговыми инструкциями и любыми скриптами, которые вы можете написать (такими как скрипты Power-Shell для регистрации приложения с помощью Graph-API).).
Храните все эти файлы в отдельном модуле или папке в вашем проекте и под контролем версий.
Как только это может быть автоматизировано (если когда-либо), эти файлы могут использоваться в качестве основы для требований вашего модуля автоматического развертывания и обновления.
Вы можете использовать модуль PowerShell AzureADPreview 2.0 для управления настраиваемыми политиками, приложениями и т. Д. Хотя это не такая полная вещь, как шаблоны ARM, но на данный момент вы можете автоматизировать многие вещи.
Полный документ находится здесь: документы AzureADPreview 2
У меня не получилось установить этот модуль в "старый" PowerShell (5.x), поэтому я попробовал "новый" PowerShell 7 (Core). Единственная проблема с PowerShell 7 и модулем AzureAD заключается в том, чтоConnect-AzureAD
использует криптографическую функцию, которой нет в.NET Core, поэтому вы должны импортировать модуль AzureADPreview с помощью-UseWindowsPowerShell
вариант.
Вот пример, работающий с PowerShell 7:
Install-Module AzureADPreview
Import-Module AzureADPreview -UseWindowsPowerShell
$tenantId = "yourb2ctenant.onmicrosoft.com"
# Note: this will interactively ask your credentials.
# If you want to run this unattended, use the -Credential parameter with a PSCredential object with a SecureString
Connect-AzureAD -TenantId $tenantId
# ready to go
#list your all custom policies:
Get-AzureADMSTrustFrameworkPolicy
# upload a policy:
$policyId = "B2C_1A_TrustFrameworkBase"
$policyFileName "YourTrustFrameworkBase.xml"
Set-AzureADMSTrustFrameworkPolicy -Id $policyId -InputFilePath $policyFileName
#list your all apps
Get-AzureADApplication
# examine one of you app and get ideas
$application = Get-AzureADApplication -ObjectId af46a788-8e55-4301-b2df-xxxxxxxxx
# create an application
$applicationName = "yourappname"
$application = New-AzureADApplication -DisplayName $applicationName -PublicClient $true etc