Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".
Azure Pipelines поддерживает непрерывную интеграцию (CI) и непрерывную доставку (CD) для постоянного и согласованного тестирования, сборки и отправки кода в любой целевой объект. В этой статье описывается, как автоматизировать процесс развертывания настраиваемых политик Azure Active Directory B2C (Azure AD B2C) с помощью Azure Pipelines.
Это важно
Управление пользовательскими политиками Azure AD B2C с помощью Azure Pipelines в настоящее время использует операции предварительной версии, доступные в конечной точке Microsoft Graph API. Использование этих API в рабочих приложениях не поддерживается. Дополнительные сведения см. в справочнике по бета-точке REST API Microsoft Graph.
Предпосылки
- Выполните действия, описанные в разделе "Начало работы с настраиваемыми политиками" в Active Directory B2C.
- Если вы еще не создали организацию DevOps, создайте ее, следуя инструкциям в разделе "Регистрация", войдите в Azure DevOps.
Регистрация приложения для задач управления
Вы используете скрипт PowerShell для развертывания политик Azure AD B2C. Прежде чем скрипт PowerShell сможет взаимодействовать с API Microsoft Graph, создайте регистрацию приложения в клиенте Azure AD B2C. Если вы еще этого не сделали, зарегистрируйте приложение Microsoft Graph.
Чтобы скрипт PowerShell получил доступ к данным в MS Graph, предоставьте зарегистрированному приложению соответствующие разрешения приложения. Было предоставлено разрешение для Microsoft Graph>политик>Policy.ReadWrite.TrustFramework в разделе разрешений API регистрации приложения.
Настройка репозитория Azure
При регистрации приложения Microsoft Graph можно настроить репозиторий для файлов политики.
- Войдите в организацию Azure DevOps.
- Создайте проект или выберите существующий проект.
- В проекте перейдите в Репозиторий и выберите "Файлы".
- Выберите существующий репозиторий или создайте его.
- В корневом каталоге репозитория создайте папку с именем
B2CAssets. Добавьте файлы пользовательской политики Azure AD B2C в папку B2CAssets . - В корневом каталоге репозитория создайте папку с именем
Scripts. Создайте файл PowerShell DeployToB2C.ps1. Вставьте следующий скрипт PowerShell в DeployToB2C.ps1. - Фиксация и отправка изменений.
Следующий скрипт получает маркер доступа из идентификатора Microsoft Entra. С помощью токена скрипт вызывает API MS Graph для загрузки политик в папку B2CAssets. Вы также можете изменить содержимое политики перед отправкой. Например, замените tenant-name.onmicrosoft.com названием вашего арендатора.
[Cmdletbinding()]
Param(
[Parameter(Mandatory = $true)][string]$ClientID,
[Parameter(Mandatory = $true)][string]$ClientSecret,
[Parameter(Mandatory = $true)][string]$TenantId,
[Parameter(Mandatory = $true)][string]$Folder,
[Parameter(Mandatory = $true)][string]$Files
)
try {
$body = @{grant_type = "client_credentials"; scope = "https://graph.microsoft.com/.default"; client_id = $ClientID; client_secret = $ClientSecret }
$response = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token -Method Post -Body $body
$token = $response.access_token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", 'application/xml')
$headers.Add("Authorization", 'Bearer ' + $token)
# Get the list of files to upload
$filesArray = $Files.Split(",")
Foreach ($file in $filesArray) {
$filePath = $Folder + $file.Trim()
# Check if file exists
$FileExists = Test-Path -Path $filePath -PathType Leaf
if ($FileExists) {
$policycontent = Get-Content $filePath -Encoding UTF8
# Optional: Change the content of the policy. For example, replace the tenant-name with your tenant name.
# $policycontent = $policycontent.Replace("your-tenant.onmicrosoft.com", "contoso.onmicrosoft.com")
# Get the policy name from the XML document
$match = Select-String -InputObject $policycontent -Pattern '(?<=\bPolicyId=")[^"]*'
If ($match.matches.groups.count -ge 1) {
$PolicyId = $match.matches.groups[0].value
Write-Host "Uploading the" $PolicyId "policy..."
$graphuri = 'https://graph.microsoft.com/beta/trustframework/policies/' + $PolicyId + '/$value'
$content = [System.Text.Encoding]::UTF8.GetBytes($policycontent)
$response = Invoke-RestMethod -Uri $graphuri -Method Put -Body $content -Headers $headers -ContentType "application/xml; charset=utf-8"
Write-Host "Policy" $PolicyId "uploaded successfully."
}
}
else {
$warning = "File " + $filePath + " couldn't be not found."
Write-Warning -Message $warning
}
}
}
catch {
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
$_
$streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
$streamReader.BaseStream.Position = 0
$streamReader.DiscardBufferedData()
$errResp = $streamReader.ReadToEnd()
$streamReader.Close()
$ErrResp
exit 1
}
exit 0
Настройка Azure Pipelines
После инициализации репозитория и заполнения пользовательскими файлами политики можно настроить конвейер выпуска. Чтобы создать конвейер, выполните следующие действия.
- В проекте выберите Конвейеры>Релизы>Новый конвейер.
- В разделе "Выбор шаблона" выберите пустое задание и нажмите кнопку "Применить".
- Введите имя этапа, например DeployCustomPolicies, а затем закройте область.
- Выберите "Добавить артефакт" и в разделе "Тип источника" выберите репозиторий Azure.
- Для проекта выберите проект.
- Выберите источник (репозиторий), содержащий папку "Скрипты ".
- Выберите ветвь по умолчанию, например master.
- Оставьте параметр По умолчанию в значении Самая последняя из основной ветви.
- Введите псевдоним источника для репозитория. Например, policyRepo.
- Выберите Добавить
- Переименуйте конвейер, чтобы отразить свое намерение. Например, внедрение настраиваемого конвейера политик.
- Нажмите кнопку "Сохранить", чтобы сохранить конфигурацию конвейера.
Настройка переменных конвейера
Переменные конвейера предоставляют удобный способ получения битов данных в различных частях конвейера. Следующие переменные содержат сведения о среде Azure AD B2C.
| Имя | Ценность |
|---|---|
clientId |
Идентификатор приложения (клиента) зарегистрированного ранее приложения. |
clientSecret |
Значение созданного ранее секрета клиента . Измените тип переменной на секрет (щелкните значок блокировки). |
tenantId |
your-b2c-tenant.onmicrosoft.com, где ваш-b2c-арендатор является именем вашего арендатор Azure AD B2C. |
Чтобы добавить переменные конвейера, выполните следующие действия.
- В конвейере выберите вкладку "Переменные".
- В разделе "Переменные конвейера" добавьте указанную выше переменную со своими значениями.
- Нажмите кнопку "Сохранить", чтобы сохранить переменные.
Добавить задачи конвейера
Задача конвейера — это предварительно упакованный скрипт, выполняющий действие. Добавьте задачу, которая вызывает сценарий PowerShellDeployToB2C.ps1 .
В созданном конвейере выберите вкладку "Задачи ".
Выберите задание агента и выберите знак плюса (+), чтобы добавить задачу в задание агента.
Найдите и выберите PowerShell. Не выбирайте "Azure PowerShell", "PowerShell на целевых компьютерах" или другую запись PowerShell.
Выберите только что добавленную задачу скрипта PowerShell .
Введите следующие значения для задачи скрипта PowerShell:
Версия задачи: 2.*
Отображаемое имя: имя политики, которую должна загрузить эта задача. Например, B2C_1A_TrustFrameworkBase.
Тип: путь к файлу
Путь к сценарию: выберите многоточие (...), перейдите в папку «Сценарии », а затем выберите файл DeployToB2C.ps1 .
Аргументы. Введите следующий скрипт PowerShell.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"Параметр
-Filesпредставляет собой список файлов политики, разделенных запятыми, для развертывания. Обновите список с помощью файлов политики.Это важно
Убедитесь, что правила загружаются в правильном порядке. Сначала политика основы, политика расширений, а затем политика доверяющей стороны. Например:
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.
Нажмите кнопку "Сохранить", чтобы сохранить задание агента.
Тестирование конвейера
Чтобы протестировать конвейер выпуска, выполните приведенные выше действия.
- Выберите Конвейеры и затем Релизы.
- Выберите созданный ранее конвейер, например DeployCustomPolicies.
- Выберите Создать релиз, а затем нажмите Создать, чтобы поставить выпуск в очередь.
Вы увидите баннер уведомления, сообщающий, что выпуск поставлен в очередь. Чтобы просмотреть его состояние, выберите ссылку в баннере уведомлений или выберите ее в списке на вкладке "Выпуски ".
Дальнейшие действия
Дополнительные сведения: