Share via


Distribuire criteri personalizzati con Azure Pipelines

Azure Pipelines supporta l'integrazione continua (CI) e il recapito continuo (CD) per testare, compilare e inviare costantemente un codice a qualsiasi destinazione. Questo articolo descrive come automatizzare il processo di distribuzione dei criteri personalizzati di Azure Active Directory B2C (Azure AD B2C) usando Azure Pipelines.

Importante

La gestione dei criteri personalizzati di Azure AD B2C con Azure Pipelines usa attualmente le operazioni di anteprima disponibili nell'endpoint di Microsoft API Graph/beta. L'uso di queste API nelle applicazioni di produzione non è supportato. Per altre informazioni, vedere le informazioni di riferimento sull'endpoint beta dell'API REST di Microsoft Graph.

Prerequisiti

Registrare un'applicazione per le attività di gestione

Usare lo script di PowerShell per distribuire i criteri di Azure AD B2C. Prima che lo script di PowerShell possa interagire con Microsoft API Graph, creare una registrazione dell'applicazione nel tenant di Azure AD B2C. Se non è già stato fatto, registrare un'applicazione Microsoft Graph.

Per consentire allo script di PowerShell di accedere ai dati in MS Graph, concedere all'applicazione registrata le autorizzazioni dell'applicazione pertinenti. È stata concessa l'autorizzazioneCriteri> di MicrosoftGraph.ReadWrite.TrustFramework> all'interno delle autorizzazioni API della registrazione dell'app.

Configurare un repository di Azure

Con un'applicazione Microsoft Graph registrata, è possibile configurare un repository per i file dei criteri.

  1. Accedere all'organizzazione di Azure DevOps.
  2. Creare un nuovo progetto o selezionare un progetto esistente.
  3. Nel progetto passare a Repository e selezionare File.
  4. Selezionare un repository esistente o crearne uno.
  5. Nella directory radice del repository creare una cartella denominata B2CAssets. Aggiungere i file di criteri personalizzati di Azure AD B2C alla cartella B2CAssets .
  6. Nella directory radice del repository creare una cartella denominata Scripts. Creare un file di PowerShell DeployToB2C.ps1. Incollare lo script di PowerShell seguente in DeployToB2C.ps1.
  7. Eseguire il commit e il push delle modifiche.

Lo script seguente acquisisce un token di accesso da Microsoft Entra ID. Con il token, lo script chiama ms API Graph per caricare i criteri nella cartella B2CAssets. È anche possibile modificare il contenuto del criterio prima di caricarlo. Ad esempio, sostituire con il tenant-name.onmicrosoft.com nome del tenant.

[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

Configurare Azure Pipelines

Con il repository inizializzato e popolato con i file di criteri personalizzati, è possibile configurare la pipeline di versione. Per creare una pipeline, seguire questa procedura:

  1. Nel progetto selezionare Pipeline versioni>>Nuova pipeline.
  2. In Selezionare un modello selezionareProcesso vuoto e quindi selezionare Applica.
  3. Immettere un nome di fase, ad esempio DeployCustomPolicies, quindi chiudere il riquadro.
  4. Selezionare Aggiungi un artefatto e in Tipo di origine selezionare Repository di Azure.
    1. Per Progetto selezionare il progetto.
    2. Selezionare l'origine (repository) che contiene la cartella Scripts .
    3. Selezionare un ramo predefinito, ad esempio master.
    4. Lasciare l'impostazione Versione predefinita più recente dal ramo predefinito.
    5. Immettere un alias di origine per il repository. Ad esempio, policyRepo.
  5. Selezionare Aggiungi
  6. Rinominare la pipeline in modo che rifletta la finalità. Ad esempio, Distribuire pipeline di criteri personalizzati.
  7. Selezionare Salva per salvare la configurazione della pipeline.

Configurare le variabili della pipeline

Le variabili della pipeline offrono un modo pratico per ottenere i bit chiave dei dati in varie parti della pipeline. Le variabili seguenti forniscono informazioni sull'ambiente Azure AD B2C.

Nome Valore
clientId ID applicazione (client) dell'applicazione registrata in precedenza.
clientSecret Valore del segreto client creato in precedenza.
Modificare il tipo di variabile in segreto (selezionare l'icona di blocco).
tenantId your-b2c-tenant.onmicrosoft.com, dove your-b2c-tenant è il nome del tenant di Azure AD B2C.

Per aggiungere variabili della pipeline, seguire questa procedura:

  1. Nella pipeline selezionare la scheda Variabili .
  2. In Variabili pipeline aggiungere la variabile precedente con i relativi valori.
  3. Selezionare Salva per salvare le variabili.

Aggiungere attività della pipeline

Un'attività della pipeline è uno script pre-pacchetto che esegue un'azione. Aggiungere un'attività che chiama lo script di PowerShellDeployToB2C.ps1 .

  1. Nella pipeline creata selezionare la scheda Attività .

  2. Selezionare Processo agente e quindi selezionare il segno più (+) per aggiungere un'attività al processo di Agent.

  3. Cercare e selezionare PowerShell. Non selezionare "Azure PowerShell", "PowerShell nei computer di destinazione" o un'altra voce di PowerShell.

  4. Selezionare l'attività Script di PowerShell appena aggiunta.

  5. Immettere i valori seguenti per l'attività Script di PowerShell:

    • Versione attività: 2.*

    • Nome visualizzato: nome del criterio che deve essere caricato dall'attività. Ad esempio, B2C_1A_TrustFrameworkBase.

    • Tipo: Percorso file

    • Percorso script: selezionare i puntini di sospensione (...), passare alla cartella Scripts e quindi selezionare il file DeployToB2C.ps1 .

    • Argomenti: immettere lo script di PowerShell seguente.

      -ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
      

      Il -Files parametro è un elenco delimitatore di virgole di file di criteri da distribuire. Aggiornare l'elenco con i file dei criteri.

      Importante

      Assicurarsi che i criteri vengano caricati nell'ordine corretto. Prima i criteri di base, i criteri delle estensioni, quindi i criteri della relying party. Ad esempio, TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

  6. Selezionare Salva per salvare il processo di Agent.

Testare la pipeline

Per testare la pipeline di versione:

  1. Selezionare Pipeline e quindi Versioni.
  2. Selezionare la pipeline creata in precedenza, ad esempio DeployCustomPolicies.
  3. Selezionare Crea versione, quindi selezionare Crea per accodare la versione.

Verrà visualizzato un banner di notifica che indica che una versione è stata accodata. Per visualizzarne lo stato, selezionare il collegamento nel banner di notifica oppure selezionarlo nell'elenco nella scheda Versioni .

Passaggi successivi

Altre informazioni su: