Compartilhar via


Implantar políticas personalizadas com o Azure Pipelines

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

O Azure Pipelines dá suporte à CI (integração contínua) e à CD (entrega contínua) para testar, compilar e enviar um código de forma constante e consistente para qualquer destino. Este artigo descreve como automatizar o processo de implantação das políticas personalizadas do Azure Active Directory B2C (Azure AD B2C) usando o Azure Pipelines.

Importante

Atualmente, o gerenciamento de políticas personalizadas do Azure AD B2C com o Azure Pipelines usa operações de versão prévia disponíveis no ponto de extremidade /beta da API do Microsoft Graph. Não há suporte para o uso dessas APIs em aplicativos de produção. Para obter mais informações, consulte a referência de ponto de extremidade beta da API REST do Microsoft Graph.

Pré-requisitos

Registrar um aplicativo para tarefas de gerenciamento

Use o script do PowerShell para implantar as políticas do Azure AD B2C. Antes que o script do PowerShell possa interagir com a API do Microsoft Graph, crie um registro de aplicativo em seu locatário do Azure AD B2C. Se você ainda não fez isso, registre um aplicativo do Microsoft Graph.

Para que o script do PowerShell acesse dados no MS Graph, conceda ao aplicativo registrado as permissões de aplicativo relevantes. Concessão da permissão Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework em Permissões de API do registro de aplicativo.

Configurar um repositório do Azure

Com um aplicativo do Microsoft Graph registrado, você está pronto para configurar um repositório para seus arquivos de política.

  1. Entre na sua organização do Azure DevOps.
  2. Crie um novo projeto ou selecione um projeto existente.
  3. Em seu projeto, navegue até Repositórios e selecione Arquivos.
  4. Selecione um repositório existente ou crie um.
  5. No diretório raiz do repositório, crie uma pasta chamada B2CAssets. Adicione seus arquivos de política personalizada do Azure AD B2C à pasta B2CAssets .
  6. No diretório raiz do repositório, crie uma pasta chamada Scripts. Criar um arquivo do PowerShell DeployToB2C.ps1. Cole o seguinte script do PowerShell em DeployToB2C.ps1.
  7. Confirme e envie as alterações.

O script a seguir adquire um token de acesso do Microsoft Entra ID. Com o token, o script chama a API do MS Graph para carregar as políticas na pasta B2CAssets . Você também pode alterar o conteúdo da política antes de carregá-la. Por exemplo, substitua o tenant-name.onmicrosoft.com pelo nome do locatário.

[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

Configurar o Azure Pipelines

Com o repositório inicializado e preenchido com seus arquivos de política personalizados, você está pronto para configurar o pipeline de lançamento. Para criar um pipeline, siga estas etapas:

  1. Em seu projeto, selecione Pipelines>Releases>New pipeline.
  2. Em Selecionar um modelo, selecione Trabalho vazio e, em seguida, selecione Aplicar.
  3. Insira um Nome do estágio, por exemplo, DeployCustomPolicies, e feche o painel.
  4. Selecione Adicionar um artefato e, em Tipo de origem, selecione Repositório do Azure.
    1. Para o Projeto, selecione seu projeto.
    2. Selecione a Origem (repositório) que contém a pasta Scripts.
    3. Selecione uma ramificação padrão, por exemplo, mestre.
    4. Deixe a configuração de Versão padrão como Mais recente da ramificação padrão.
    5. Insira um alias de origem para o repositório. Por exemplo, policyRepo.
  5. Selecione Adicionar
  6. Renomeie o pipeline para refletir a intenção. Por exemplo, Implantar o pipeline de política personalizada.
  7. Selecione Salvar para salvar a configuração do pipeline.

Configurar variáveis de pipeline

As variáveis do pipeline oferecem uma maneira prática de acessar dados essenciais em diversas partes do pipeline. As variáveis a seguir fornecem informações sobre o ambiente do Azure AD B2C.

Nome Valor
clientId ID do aplicativo (cliente) do aplicativo que você registrou anteriormente.
clientSecret O valor do segredo do cliente que você criou anteriormente.
Altere o tipo de variável para secreto (selecione o ícone de cadeado).
tenantId your-b2c-tenant.onmicrosoft.com, em que your-b2c-tenant é o nome do locatário do Azure AD B2C.

Para adicionar variáveis de pipeline, siga estas etapas:

  1. Em seu pipeline, selecione a aba Variáveis.
  2. Em Variáveis de pipeline, adicione a variável acima com seus valores.
  3. Selecione Salvar para salvar as variáveis.

Adicionar tarefas de pipeline

Uma tarefa de pipeline é um script pré-empacotado que executa uma ação. Adicione uma tarefa que executa o scriptDeployToB2C.ps1 PowerShell.

  1. No pipeline que você criou, selecione a guia Tarefas .

  2. Selecione Tarefa do Agente e, em seguida, selecione o ícone de mais (+) para adicionar uma tarefa à Tarefa do Agente.

  3. Pesquise e selecione PowerShell. Não selecione "Azure PowerShell", "PowerShell em computadores de destino" ou outra entrada do PowerShell.

  4. Selecione a tarefa de Script do PowerShell recém-adicionada.

  5. Insira os seguintes valores para a tarefa Script do PowerShell:

    • Versão da tarefa: 2.*

    • Nome de exibição: o nome da política que esta tarefa deve carregar. Por exemplo, B2C_1A_TrustFrameworkBase.

    • Tipo: Caminho do arquivo

    • Caminho do Script: selecione as reticências (...), navegue até a pasta Scripts e selecione o arquivo DeployToB2C.ps1.

    • Argumentos: insira o script do PowerShell a seguir.

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

      O parâmetro -Files é uma lista de arquivos de política separados por vírgulas para implantação. Atualize a lista com seus arquivos de política.

      Importante

      Verifique se as políticas foram carregadas na ordem correta. Primeiro, a política de base, a política de extensões, então as políticas de terceira parte confiável. Por exemplo, TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

  6. Selecione Salvar para salvar o trabalho do agente.

Testar seu pipeline

Para testar seu pipeline de lançamento:

  1. Selecione Pipelines e, em seguida, Releases.
  2. Selecione o pipeline criado anteriormente, por exemplo, DeployCustomPolicies.
  3. Selecione Criar versãoe selecione Criar para colocar a versão na fila.

Você deverá ver uma faixa de notificação informando que uma versão foi colocada na fila. Para exibir seu status, selecione o link na faixa de notificação ou selecione-o na lista na guia Versões .

Próximas etapas

Saiba mais sobre: