Distribuera anpassade principer med Azure Pipelines

Azure Pipelines stöder kontinuerlig integrering (CI) och kontinuerlig leverans (CD) för att kontinuerligt och konsekvent testa, skapa och skicka en kod till alla mål. I den här artikeln beskrivs hur du automatiserar distributionsprocessen för anpassade principer Azure Active Directory B2C (Azure AD B2C) med Hjälp av Azure Pipelines.

Viktigt

Hantering Azure AD B2C anpassade principer med Azure Pipelines använder för närvarande förhandsversionsåtgärder som är tillgängliga på Microsoft Graph API-slutpunkten. Användning av dessa API:er i produktionsprogram stöds inte. Mer information finns i Microsoft Graph REST API betaslutpunktsreferens.

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 APIskapar 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. Beviljat behörigheten Microsoft GraphPolicyPolicy.ReadWrite.TrustFramework i API-behörigheterna för appregistreringen.

Konfigurera en Azure-lagringsplatsen

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 projekteller välj ett befintligt projekt.
  3. I projektet navigerar du till Lagringsplatsenoch väljer Filer.
  4. Välj en befintlig lagringsplats eller skapa en.
  5. Skapa en mapp med namnet i rotkatalogen för din B2CAssets lagringsplats. Lägg till Azure AD B2C anpassade principfiler i mappen B2CAssets.
  6. Skapa en mapp med namnet i rotkatalogen för din Scripts lagringsplats. Skapa en PowerShell-fil DeployToB2C.ps1. Klistra in följande PowerShell-skript i DeployToB2C.ps1.
  7. Genomför och push-skicka ändringarna.

Följande skript hämtar en åtkomsttoken från Azure AD. 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 till exempel med tenant-name.onmicrosoft.com namnet på din klientorganisation.

[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

            # 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'
                $response = Invoke-RestMethod -Uri $graphuri -Method Put -Body $policycontent -Headers $headers
    
                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 i med dina anpassade principfiler är du redo att konfigurera lanseringspipelinen. Följ dessa steg om du vill skapa en pipeline:

  1. I projektet väljer du Pipelines Releases New pipeline (Nyapipelines).
  2. Under Välj en mallväljer du Tomtjobb och sedan Använd.
  3. Ange ett fasnamn,till exempel DeployCustomPolicies,och stäng sedan fönstret.
  4. Välj Lägg till en artefaktoch välj Azure Repositoryunder Källtyp.
    1. För Projectvä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 inställningen StandardversionSenaste 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. Du kan till exempel distribuera en pipeline för anpassad princip.
  7. Välj Spara för att spara pipelinekonfigurationen.

Konfigurera pipelinevariabler

Med pipelinevariablerna kan du enkelt hämta viktiga datadelar 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, your-b2c-tenant.onmicrosoft.com är namnet på din Azure AD B2C klientorganisation.

Följ dessa steg om du vill lägga till pipelinevariabler:

  1. I din pipeline väljer du fliken Variabler.
  2. Under Pipelinevariablerlägger du till variabeln ovan med deras värden.
  3. Välj Spara för att spara variablerna.

Lägga till pipeline-uppgifter

En pipeline-uppgift är ett förpaketerat skript som utför en åtgärd. Lägg till en uppgift som anropar DeployToB2C.ps1 PowerShell-skriptet.

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

  2. Välj Agentjobboch 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 någon annan PowerShell-post.

  4. Välj den nyligen tillagda PowerShell-skriptuppgiften.

  5. Ange följande värden för PowerShell-skriptuppgiften:

    • Uppgiftsversion:2.*

    • Visningsnamn:Namnet på den princip som den här aktiviteten ska ladda upp. Du kan till exempel B2C_1A_TrustFrameworkBase.

    • Typ:Filsökväg

    • Skriptsökväg:Välj ellipsen (...), navigera till mappen Skript och välj sedan DeployToB2C.ps1 filen.

    • 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änsare med en lista ö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 principerna för den förlitande parten. Till exempel TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

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

Testa din pipeline

Så här testar du din lanseringspipeline:

  1. Välj Pipelines och sedan Versioner.
  2. Välj den pipeline som du skapade tidigare, till exempel DeployCustomPolicies.
  3. Välj Skapa version ochvälj sedan Skapa för att köa versionen.

Du bör se en meddelandebanderoll som säger att en version har köats. 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: