Distribuera anpassade principer med Azure Pipelines
Azure Pipelines stöder kontinuerlig integrering (CI) och kontinuerlig leverans (CD) för att ständigt och konsekvent testa, skapa och skicka en kod till alla mål. Den här artikeln beskriver hur du automatiserar distributionsprocessen för anpassade Azure Active Directory B2C-principer (Azure AD B2C) med hjälp av Azure Pipelines.
Viktigt
För att hantera Azure AD anpassade B2C-principer med Azure Pipelines används för närvarande förhandsversionsåtgärder som är tillgängliga på Microsoft Graph API /beta
slutpunkt. Användning av dessa API:er i produktionsprogram stöds inte. Mer information finns i betaslutpunktsreferensen för Microsoft Graph REST API.
Förutsättningar
- Slutför stegen i Kom igång med anpassade principer i Active Directory B2C.
- Om du inte har skapat en DevOps-organisation skapar du en genom att följa anvisningarna i Registrera dig och logga in på Azure DevOps.
Registrera ett program för hanteringsuppgifter
Du använder PowerShell-skript för att distribuera Azure AD B2C-principer. Innan PowerShell-skriptet kan interagera med Microsoft Graph API skapar du en programregistrering i din Azure AD B2C-klientorganisation. Om du inte redan har gjort det registrerar du ett Microsoft Graph-program.
För PowerShell-skriptet för åtkomst till data i MS Graph beviljar du det registrerade programmet relevanta programbehörigheter. Beviljad behörigheten Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework i API-behörigheterna för appregistreringen.
Konfigurera en Azure-lagringsplats
När ett Microsoft Graph-program har registrerats är du redo att konfigurera en lagringsplats för dina principfiler.
- Logga in på din Azure DevOps-organisation.
- Skapa ett nytt projekt eller välj ett befintligt projekt.
- I projektet navigerar du till Lagringsplatser och väljer Filer.
- Välj en befintlig lagringsplats eller skapa en.
- Skapa en mapp med namnet
B2CAssets
i lagringsplatsens rotkatalog. Lägg till dina Azure AD anpassade B2C-principfiler i mappen B2CAssets. - Skapa en mapp med namnet
Scripts
i lagringsplatsens rotkatalog. Skapa en PowerShell-fil DeployToB2C.ps1. Klistra in följande PowerShell-skript i DeployToB2C.ps1. - Checka in och push-överför ändringarna.
Följande skript hämtar en åtkomsttoken från Microsoft Entra ID. Med token anropar skriptet MS-Graph API för att ladda upp principerna i mappen B2CAssets. Du kan också ändra innehållet i principen innan du laddar upp den. Ersätt tenant-name.onmicrosoft.com
till exempel med ditt klientnamn.
[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
Konfigurera Azure Pipelines
När lagringsplatsen har initierats och fyllts med dina anpassade principfiler är du redo att konfigurera versionspipelinen. Följ dessa steg för att skapa en pipeline:
- I projektet väljer du PipelinesReleasesNew pipeline (Pipelines>Releases> New pipeline).
- Under Välj en mall väljer du Tomt jobb och sedan Använd.
- Ange ett fasnamn, till exempel DeployCustomPolicies, och stäng sedan fönstret.
- Välj Lägg till en artefakt och välj Azure Repository under Källtyp.
- För Projektet väljer du ditt projekt.
- Välj den källa (lagringsplats) som innehåller mappen Skript .
- Välj en standardgren, till exempel master.
- Lämna standardversionsinställningensenaste från standardgrenen.
- Ange ett källalias för lagringsplatsen. Till exempel policyRepo.
- Välj Lägg till
- Byt namn på pipelinen så att den återspeglar dess avsikt. Till exempel Distribuera anpassad princippipeline.
- Välj Spara för att spara pipelinekonfigurationen.
Konfigurera pipelinevariabler
Med pipelinevariablerna kan du enkelt hämta viktiga databitar till olika delar av pipelinen. Följande variabler innehåller information om din Azure AD B2C-miljö.
Name | Värde |
---|---|
clientId |
Program-ID (klient) för det program som du registrerade tidigare. |
clientSecret |
Värdet för klienthemligheten som du skapade tidigare. Ändra variabeltypen till hemlighet (välj låsikonen). |
tenantId |
your-b2c-tenant.onmicrosoft.com , där din b2c-klient är namnet på din Azure AD B2C-klientorganisation. |
Följ dessa steg för att lägga till pipelinevariabler:
- I pipelinen väljer du fliken Variabler .
- Under Pipeline-variabler lägger du till variabeln ovan med sina värden.
- Välj Spara för att spara variablerna.
Lägga till pipelineuppgifter
En pipelineaktivitet är ett förpaketerat skript som utför en åtgärd. Lägg till en uppgift som anropar DeployToB2C.ps1 PowerShell-skript.
I pipelinen som du skapade väljer du fliken Uppgifter .
Välj Agentjobb och välj sedan plustecknet (+) för att lägga till en uppgift i agentjobbet.
Sök efter och välj PowerShell. Välj inte "Azure PowerShell", "PowerShell på måldatorer" eller en annan PowerShell-post.
Välj nyligen tillagda PowerShell-skriptaktivitet .
Ange följande värden för PowerShell-skriptaktiviteten:
Uppgiftsversion: 2.*
Visningsnamn: Namnet på principen som uppgiften ska ladda upp. Till exempel B2C_1A_TrustFrameworkBase.
Typ: Filsökväg
Skriptsökväg: Välj ellipsen (...), navigera till mappen Skript och välj sedan filenDeployToB2C.ps1 .
Argument: Ange följande PowerShell-skript.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
Parametern
-Files
är en kommaavgränsarelista över principfiler som ska distribueras. Uppdatera listan med dina principfiler.Viktigt
Kontrollera att principerna laddas upp i rätt ordning. Först basprincipen, tilläggsprincipen och sedan de förlitande partprinciperna. Till exempel
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
.
Välj Spara för att spara agentjobbet.
Testa din pipeline
Testa versionspipelinen:
- Välj Pipelines och sedan Versioner.
- Välj den pipeline som du skapade tidigare, till exempel DeployCustomPolicies.
- Välj Skapa version och välj sedan Skapa för att köa versionen.
Du bör se en meddelandebanderoll som säger att en version har placerats i kö. Om du vill visa dess status väljer du länken i meddelandebanderollen eller väljer den i listan på fliken Versioner .
Nästa steg
Läs mer om: