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

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.

  1. Logga in på din Azure DevOps-organisation.
  2. Skapa ett nytt projekt eller välj ett befintligt projekt.
  3. I projektet navigerar du till Lagringsplatser och väljer Filer.
  4. Välj en befintlig lagringsplats eller skapa en.
  5. Skapa en mapp med namnet B2CAssetsi lagringsplatsens rotkatalog. Lägg till dina Azure AD anpassade B2C-principfiler i mappen B2CAssets.
  6. Skapa en mapp med namnet Scriptsi lagringsplatsens rotkatalog. Skapa en PowerShell-fil DeployToB2C.ps1. Klistra in följande PowerShell-skript i DeployToB2C.ps1.
  7. 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:

  1. I projektet väljer du PipelinesReleasesNew pipeline (Pipelines>Releases> New pipeline).
  2. Under Välj en mall väljer du Tomt jobb och sedan Använd.
  3. Ange ett fasnamn, till exempel DeployCustomPolicies, och stäng sedan fönstret.
  4. Välj Lägg till en artefakt och välj Azure Repository under Källtyp.
    1. För Projektet väljer du ditt projekt.
    2. Välj den källa (lagringsplats) som innehåller mappen Skript .
    3. Välj en standardgren, till exempel master.
    4. Lämna standardversionsinställningensenaste från standardgrenen.
    5. Ange ett källalias för lagringsplatsen. Till exempel policyRepo.
  5. Välj Lägg till
  6. Byt namn på pipelinen så att den återspeglar dess avsikt. Till exempel Distribuera anpassad princippipeline.
  7. 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:

  1. I pipelinen väljer du fliken Variabler .
  2. Under Pipeline-variabler lägger du till variabeln ovan med sina värden.
  3. 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.

  1. I pipelinen som du skapade väljer du fliken Uppgifter .

  2. Välj Agentjobb och välj sedan plustecknet (+) för att lägga till en uppgift i agentjobbet.

  3. Sök efter och välj PowerShell. Välj inte "Azure PowerShell", "PowerShell på måldatorer" eller en annan PowerShell-post.

  4. Välj nyligen tillagda PowerShell-skriptaktivitet .

  5. 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.

  6. Välj Spara för att spara agentjobbet.

Testa din pipeline

Testa versionspipelinen:

  1. Välj Pipelines och sedan Versioner.
  2. Välj den pipeline som du skapade tidigare, till exempel DeployCustomPolicies.
  3. 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: