Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para ser adquirido por nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
Azure Pipelines admite la integración continua (CI) y la entrega continua (CD) para probar, compilar y enviar un código de forma constante y coherente a cualquier destino. En este artículo se describe cómo automatizar el proceso de implementación de las directivas personalizadas de Azure Active Directory B2C (Azure AD B2C) mediante Azure Pipelines.
Importante
Actualmente, la administración de directivas personalizadas de Azure AD B2C con Azure Pipelines usa versión preliminar operaciones disponibles en el punto de conexión de Microsoft Graph API /beta
. No se admite el uso de estas API en aplicaciones de producción. Para obtener más información, consulte la referencia del punto de conexión beta de la API REST de Microsoft Graph.
Prerrequisitos
- Complete los pasos descritos en Introducción a las directivas personalizadas en Active Directory B2C.
- Si no ha creado una organización de DevOps, cree una siguiendo las instrucciones de Registro, inicie sesión en Azure DevOps.
Registro de una aplicación para tareas de administración
El script de PowerShell se usa para implementar las directivas de Azure AD B2C. Antes de que el script de PowerShell pueda interactuar con Microsoft Graph API, cree un registro de aplicación en el inquilino de Azure AD B2C. Si aún no lo ha hecho, registre una aplicación de Microsoft Graph.
Para que el script de PowerShell acceda a los datos de MS Graph, conceda a la aplicación registrada los permisos de aplicación correspondientes. Se ha concedido el permiso Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework dentro de los permisos de API del registro de la aplicación.
Configuración de un repositorio de Azure
Con una aplicación de Microsoft Graph registrada, está listo para configurar un repositorio para los archivos de directiva.
- Inicie sesión en su organización de Azure DevOps.
- Cree un proyecto o seleccione un proyecto existente.
- En el proyecto, vaya a Repositorios y seleccione Archivos.
- Seleccione un repositorio existente o cree uno.
- En el directorio raíz del repositorio, cree una carpeta denominada
B2CAssets
. Agregue los archivos de directiva personalizados de Azure AD B2C a la carpeta B2CAssets . - En el directorio raíz del repositorio, cree una carpeta denominada
Scripts
. Cree un archivo de PowerShell DeployToB2C.ps1. Pegue el siguiente script de PowerShell en DeployToB2C.ps1. - Confirme e inserte los cambios.
El script siguiente adquiere un token de acceso de Microsoft Entra ID. Con el token, el script llama a MS Graph API para cargar las directivas en la carpeta B2CAssets . También puede cambiar el contenido de la directiva antes de cargarla. Por ejemplo, reemplace por tenant-name.onmicrosoft.com
el nombre del inquilino.
[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
Configuración de Azure Pipelines
Con su repositorio inicializado y poblado con sus archivos de directiva personalizados, usted está listo para configurar el flujo de liberación. Para crear una canalización, siga estos pasos:
- En tu proyecto, selecciona Canalizaciones>Releases>Nueva canalización.
- En Seleccionar una plantilla, seleccione Trabajo vacío y, a continuación, seleccione Aplicar.
- Escriba un nombre de fase, por ejemplo DeployCustomPolicies y, a continuación, cierre el panel.
- Seleccione Agregar un artefacto y, en Tipo de origen, seleccione Repositorio de Azure.
- En Project (Proyecto), seleccione el proyecto.
- Seleccione el origen (repositorio) que contiene la carpeta Scripts .
- Seleccione una rama predeterminada, por ejemplo principal.
- Deje la opción Versión predeterminada como Última desde la rama predeterminada.
- Escriba un alias de origen para el repositorio. Por ejemplo, policyRepo.
- Seleccione Agregar.
- Cambie el nombre de la canalización para reflejar su intención. Por ejemplo, Implementar la canalización de directivas personalizadas.
- Seleccione Guardar para guardar la configuración de la canalización.
Configuración de variables de canalización
Las variables del flujo de trabajo proporcionan una manera cómoda de acceder a información esencial en varias partes del flujo de trabajo. Las siguientes variables proporcionan información sobre el entorno de Azure AD B2C.
Nombre | Importancia |
---|---|
clientId |
Id. de aplicación (cliente) de la aplicación que registró anteriormente. |
clientSecret |
El valor del secreto de cliente que creó anteriormente. Cambie el tipo de variable a secret (seleccione el icono de bloqueo). |
tenantId |
your-b2c-tenant.onmicrosoft.com , donde your-b2c-tenant es el nombre del inquilino de Azure AD B2C. |
Para agregar variables de canalización, siga estos pasos:
- En la canalización, seleccione la pestaña Variables.
- En Variables de canalización, agregue la variable anterior con sus valores.
- Seleccione Guardar para guardar las variables.
Adición de tareas de canalización
Una tarea de canalización es un script previamente empaquetado que realiza una acción. Agregue una tarea que llame al script DeployToB2C.ps1 de PowerShell.
En la canalización que creó, seleccione la pestaña Tareas.
Seleccione Trabajo del agente y, a continuación, seleccione el signo más (+) para agregar una tarea al trabajo del Agente.
Busque y seleccione PowerShell. No seleccione "Azure PowerShell", "PowerShell en máquinas de destino" ni otra entrada de PowerShell.
Seleccione la tarea Script de PowerShell recién agregada.
Escriba los valores siguientes para la tarea Script de PowerShell:
Versión de tarea: 2.*
Nombre para mostrar: el nombre de la directiva que debe cargar esta tarea. Por ejemplo, B2C_1A_TrustFrameworkBase.
Tipo: Ruta del archivo
Ruta de acceso del script: seleccione los puntos suspensivos (...), vaya a la carpeta Scripts y, a continuación, seleccione el archivo DeployToB2C.ps1 .
Argumentos: escriba el siguiente script de PowerShell.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
El
-Files
parámetro es una lista delimitada por comas de archivos de políticas que se van a implementar. Actualice la lista con los archivos de políticas.Importante
Asegúrese de que las directivas se cargan en el orden correcto. En primer lugar, la directiva base, la directiva de extensiones y, después, las directivas de usuario de confianza. Por ejemplo:
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
.
Seleccione Guardar para guardar el trabajo del Agente.
Prueba de la canalización
Para probar la canalización de versión:
- Seleccione Canalizaciones y luego Versiones.
- Seleccione la canalización que creó anteriormente, por ejemplo DeployCustomPolicies.
- Seleccione Crear versión y, a continuación, seleccione Crear para poner en cola la versión.
Debería ver un banner de notificación que indica que una versión se ha puesto en cola. Para ver su estado, seleccione el vínculo en el banner de notificación o selecciónelo en la lista de la pestaña Versiones .
Pasos siguientes
Más información sobre: