Azure Pipelines ile özel ilkeler dağıtma
Azure Pipelines sürekli ve tutarlı bir şekilde test etmek, oluşturmak ve herhangi bir hedefe kod göndermek için sürekli tümleştirmeyi (CI) ve sürekli teslimi (CD) destekler. Bu makalede, Azure Pipelines kullanarak Azure Active Directory B2C (Azure AD B2C) özel ilkelerinin dağıtım işleminin nasıl otomatikleştirildiği açıklanır.
Önemli
Azure AD B2C özel ilkelerini Azure Pipelines ile yönetmek şu anda Microsoft Graph API /beta
uç noktasında kullanılabilen önizleme işlemlerini kullanır. Bu API'lerin üretim uygulamalarında kullanımı desteklenmez. Daha fazla bilgi için bkz. Microsoft Graph REST API beta uç noktası başvurusu.
Önkoşullar
- Active Directory B2C'de özel ilkelerle Kullanmaya başlayın adımlarını tamamlayın.
- DevOps bir kuruluş oluşturmadıysanız, kaydolma, Azure DevOps oturum açma başlığındaki yönergeleri izleyerek bir kuruluş oluşturun.
Yönetim görevleri için uygulama kaydetme
Azure AD B2C ilkelerini dağıtmak için PowerShell betiğini kullanırsınız. PowerShell betiğinin Microsoft Graph API ile etkileşim kurabilmesi için önce Azure AD B2C kiracınızda bir uygulama kaydı oluşturun. Henüz yapmadıysanız bir Microsoft Graph uygulaması kaydedin.
PowerShell betiğinin MS Graph'daki verilere erişmesi için kayıtlı uygulamaya ilgili uygulama izinlerini verin. Uygulama kaydının API İzinleri içinde Microsoft Graph>PolicyPolicy.ReadWrite.TrustFramework> izni verildi.
Azure Depo'larını yapılandırma
Kayıtlı bir Microsoft Graph uygulamasıyla, ilke dosyalarınız için bir depo yapılandırmaya hazırsınız.
- Azure DevOps kuruluşunuzda oturum açın.
- Yeni bir proje oluşturun veya var olan bir projeyi seçin.
- Projenizde Repos gidin ve Dosyalar'ı seçin.
- Mevcut bir depo seçin veya bir depo oluşturun.
- Deponuzun kök dizininde adlı
B2CAssets
bir klasör oluşturun. Azure AD B2C özel ilke dosyalarınızı B2CAssets klasörüne ekleyin. - Deponuzun kök dizininde adlı
Scripts
bir klasör oluşturun. DeployToB2C.ps1bir PowerShell dosyası oluşturun. Aşağıdaki PowerShell betiğini DeployToB2C.ps1yapıştırın. - Değişiklikleri işleme ve gönderme .
Aşağıdaki betik, Azure AD'den bir erişim belirteci alır. Belirteçle betik, B2CAssets klasörüne ilkeleri yüklemek için MS Graph API çağırır. İlkeyi karşıya yüklemeden önce içeriğini de değiştirebilirsiniz. Örneğin, değerini tenant-name.onmicrosoft.com
kiracı adınız ile değiştirin.
[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 yapılandırma
Deponuz başlatıldığında ve özel ilke dosyalarınızla doldurularak yayın işlem hattını ayarlamaya hazırsınız demektir. İşlem hattı oluşturmak için şu adımları izleyin:
- Projenizde Pipelines>ReleasesNew>işlem hattını seçin.
- Şablon seçin'in altında İşi boşalt'ı ve ardından Uygula'yı seçin.
- Bir Aşama adı girin( örneğin DeployCustomPolicies) ve ardından bölmeyi kapatın.
- Yapıt ekle'yi seçin ve Kaynak türü'nin altında Azure Deposu'na tıklayın.
- Project için projenizi seçin.
- Betikler klasörünü içeren Kaynak (depo) öğesini seçin.
- Varsayılan dal (örneğin, ana dal) seçin.
- Varsayılandaldan En Son'un Varsayılan sürüm ayarını değiştirmeyin.
- Depo için bir Kaynak diğer adı girin. Örneğin , policyRepo.
- Ekle’yi seçin
- İşlem hattını amacını yansıtacak şekilde yeniden adlandırın. Örneğin, Özel İlke İşlem Hattı Dağıtma.
- İşlem hattı yapılandırmasını kaydetmek için Kaydet'i seçin.
İşlem hattı değişkenlerini yapılandırma
İşlem hattı değişkenleri, önemli veri bitlerini işlem hattının çeşitli bölümlerine almak için kullanışlı bir yol sağlar. Aşağıdaki değişkenler Azure AD B2C ortamınız hakkında bilgi sağlar.
Name | Değer |
---|---|
clientId |
Daha önce kaydettiğiniz uygulamanın uygulama (istemci) kimliği. |
clientSecret |
Daha önce oluşturduğunuz istemci gizli dizisinin değeri. Değişken türünü gizli dizi olarak değiştirin (kilit simgesini seçin). |
tenantId |
your-b2c-tenant.onmicrosoft.com , burada b2c-kiracınız Azure AD B2C kiracınızın adıdır. |
İşlem hattı değişkenleri eklemek için şu adımları izleyin:
- İşlem hattınızda Değişkenler sekmesini seçin.
- İşlem hattı değişkenleri'nin altında, değerleriyle birlikte yukarıdaki değişkeni ekleyin.
- Değişkenleri kaydetmek için Kaydet'i seçin.
İşlem hattı görevleri ekleme
İşlem hattı görevi, eylem gerçekleştiren önceden paketlenmiş bir betiktir. DeployToB2C.ps1 PowerShell betiğini çağıran bir görev ekleyin.
Oluşturduğunuz işlem hattında Görevler sekmesini seçin.
Aracı işi'ni seçin ve ardından artı işaretini (+) seçerek Aracı işine bir görev ekleyin.
PowerShell'i arayın ve seçin. "Azure PowerShell", "Hedef makinelerde PowerShell" veya başka bir PowerShell girişi seçmeyin.
Yeni eklenen PowerShell Betiği görevini seçin.
PowerShell Betiği görevi için aşağıdaki değerleri girin:
Görev sürümü: 2.*
Görünen ad: Bu görevin karşıya yüklemesi gereken ilkenin adı. Örneğin , B2C_1A_TrustFrameworkBase.
Tür: Dosya Yolu
Betik Yolu: Üç noktayı (...) seçin, Betikler klasörüne gidin ve DeployToB2C.ps1 dosyasını seçin.
Bağımsız değişkenler: Aşağıdaki PowerShell betiğini girin.
-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
parametresi, dağıtılacak ilke dosyalarının virgülle sınırlayıcı listesidir. Listeyi ilke dosyalarınızla güncelleştirin.Önemli
İlkelerin doğru sırada yüklendiğinden emin olun. Önce temel ilke, uzantılar ilkesi, sonra bağlı olan taraf ilkeleri. Örneğin,
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
.
Aracı işini kaydetmek için Kaydet'i seçin.
İşlem hattınızı test etme
Yayın işlem hattınızı test etmek için:
- Pipelines ve ardından Yayınlar'ı seçin.
- Daha önce oluşturduğunuz işlem hattını seçin, örneğin DeployCustomPolicies.
- Yayını kuyruğa almak için Yayınoluştur'u ve ardından Oluştur'u seçin.
Bir yayının kuyruğa alındığını belirten bir bildirim başlığı görmeniz gerekir. Durumunu görüntülemek için bildirim başlığındaki bağlantıyı seçin veya Yayınlar sekmesindeki listeden seçin.
Sonraki adımlar
Aşağıdakiler hakkında daha fazla bilgi edinin: