Dela via


Distribuera anpassade principer med Azure Pipelines

Viktigt!

Från och med den 1 maj 2025 är Azure AD B2C inte längre tillgängligt att köpa för nya kunder. Läs mer i våra vanliga frågor och svar.

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 principer för Azure Active Directory B2C (Azure AD B2C) med hjälp av Azure Pipelines.

Viktigt!

För att hantera anpassade Azure AD B2C-principer med Azure Pipelines används för närvarande förhandsgranskningsåtgärder som är tillgängliga på Microsoft Graph API-slutpunkten /beta . 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 att PowerShell-skriptet ska få åtkomst till data i MS Graph beviljar du det registrerade programmet relevanta programbehörigheter. Beviljades behörigheten Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework inom API-behörigheter för appens registrering.

Konfigurera en Azure-lagringsplats

Med ett Microsoft Graph-program registrerat ä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 ditt projekt, navigera till Arkiv, och välj Filer.
  4. Välj en befintlig lagringsplats eller skapa en.
  5. I rotkatalogen på lagringsplatsen skapar du en mapp med namnet B2CAssets. Lägg till dina anpassade principfiler för Azure AD B2C i mappen B2CAssets .
  6. I rotkatalogen på lagringsplatsen skapar du en mapp med namnet Scripts. Skapa en PowerShell-fil DeployToB2C.ps1. Klistra in följande PowerShell-skript i DeployToB2C.ps1.
  7. Checka in och skicka ä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 policyn innan den laddas upp. 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 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 under Källtyp väljer du Azure-lagringsplats.
    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ällningen till Senaste 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 Driftsätta anpassad policy-pipeline.
  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ö.

Namn Värde
clientId Program-ID (klient) för det program som du registrerade tidigare.
clientSecret Värdet för den klienthemlighet som du skapade tidigare.
Ändra variabeltypen till hemlighet (välj låsikonen).
tenantId your-b2c-tenant.onmicrosoft.com, där din b2c-klientorganisation ä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 Pipelinevariabler lägger du till variabeln ovan med sina värden.
  3. Spara variablerna genom att välja Spara .

Lägga till pipelineuppgifter

En pipelineaktivitet är ett förpaketerat skript som utför en åtgärd. Lägg till en uppgift som anropar powershell-skriptetDeployToB2C.ps1 .

  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å den policy 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!

      Se till 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

För att testa din release-pipeline:

  1. Välj Pipelines och sedan Utgåvor.
  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: