Aangepast beleid implementeren met Azure Pipelines
Artikel
Azure Pipelines ondersteunt continue integratie (CI) en continue levering (CD), zodat u continu en consistent een code kunt testen, ontwikkelen en verzenden naar elk doel. In dit artikel wordt beschreven hoe u het implementatieproces van het aangepaste beleid van Active Directory B2C (Azure AD B2C) automatiseert met behulp van Azure Pipelines.
Belangrijk
Het beheren van Azure AD B2C aangepast beleid met Azure Pipelines maakt momenteel gebruik van preview-bewerkingen die beschikbaar zijn op het Microsoft Graph API /betaeindpunt. Het gebruik van deze API's in productie-apps wordt niet ondersteund. Zie de naslaginformatie over de bèta-eindpunten van de Microsoft Graph REST API voor meer informatie.
U gebruikt PowerShell-script om het Azure AD B2C-beleid te implementeren. Voordat het PowerShell-script kan communiceren met de Microsoft Graph API, maakt u een toepassingsregistratie in uw Azure AD B2C-tenant. Als u dit nog niet hebt gedaan, registreert u een Microsoft Graph-toepassing.
Voor het PowerShell-script voor toegang tot gegevens in MS Graph verleent u de geregistreerde toepassing de relevante toepassingsmachtigingen. De machtiging Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework toegekend binnen de API-machtigingen van de app-registratie.
Een Azure-opslagplaats configureren
Wanneer een Microsoft Graph-toepassing is geregistreerd, kunt u een opslagplaats voor uw beleidsbestanden configureren.
Navigeer in uw project naar Opslagplaatsen en selecteer Bestanden.
Selecteer een bestaande opslagplaats of maak er een.
Maak in de hoofdmap van uw opslagplaats een map met de naam B2CAssets. Voeg uw Azure AD B2C aangepaste beleidsbestanden toe aan de map B2CAssets.
Maak in de hoofdmap van uw opslagplaats een map met de naam Scripts. Maak een PowerShell-bestand DeployToB2C.ps1. Plak het volgende PowerShell-script in DeployToB2C.ps1.
Wijzigingen Doorvoeren en Pushen.
Het volgende script verkrijgt een toegangstoken van Microsoft Entra id. Met het token roept het script de MS Graph API aan om het beleid te uploaden in de map B2CAssets. U kunt ook de inhoud van het beleid wijzigen voordat u het uploadt. Vervang bijvoorbeeld de tenant-name.onmicrosoft.com met de naam van uw 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
Azure Pipelines configureren
Nu uw opslagplaats is geïnitialiseerd en gevuld met uw aangepaste beleidsbestanden, bent u klaar om de release-pijplijn in te stellen. Voer de volgende stappen uit om een pijplijn te maken:
Selecteer in uw project Pijplijnen>Releases>Nieuwe pijplijn.
Selecteer onder Een sjabloon selecteren de optie Lege taak en selecteer Toepassen.
Voer een Fasenaam in, bijvoorbeeld DeployCustomPolicies, en sluit het deelvenster.
Selecteer Een artefact toevoegen en selecteer onder Brontype de optie Azure-opslagplaats.
Selecteer uw project voor het Project.
Selecteer de Bron (opslagplaats) die de map Scripts bevat.
Selecteer een Standaardvertakking, bijvoorbeeld master.
Laat de instelling Standaardversie van De meest recente versie van de standaardvertakking staan.
Voer een Bronalias in voor de opslagplaats. Bijvoorbeeld policyRepo.
Selecteer Toevoegen
Wijzig de naam van de pijplijn zodat deze overeenkomt met de intentie. Bijvoorbeeld Aangepaste beleidspijplijn implementeren.
Selecteer Opslaan om de pijplijnconfiguratie op te slaan.
Pijplijnvariabelen configureren
De pijplijnvariabelen bieden u een handige manier om belangrijke stukjes gegevens op te halen in verschillende delen van de pijplijn. De volgende variabelen bevatten informatie over uw Azure AD B2C-omgeving.
Name
Waarde
clientId
Id van de toepassing (client) van de toepassing die u eerder hebt geregistreerd.
clientSecret
De waarde van het clientgeheim dat u eerder hebt gemaakt. Wijzig het variabeletype in geheim (selecteer het vergrendelingspictogram).
tenantId
your-b2c-tenant.onmicrosoft.com, waarbij uw b2c-tenant de naam is van uw Azure AD B2C-tenant.
Volg deze stappen om pijplijnvariabelen toe te voegen:
Selecteer in uw pijplijn het tabblad Variabelen.
Voeg onder Pijplijnvariabelen de bovenstaande variabele toe met de bijbehorende waarden.
Selecteer Opslaan om de variabelen op te slaan.
Pijplijntaken toevoegen
Een pijplijntaak is een vooraf verpakt script waarmee een actie wordt uitgevoerd. Voeg een taak toe die het PowerShell-script DeployToB2C.ps1 aanroept.
Selecteer het tabblad Taken in de pijplijn die u hebt gemaakt.
Selecteer Agenttaak en selecteer vervolgens het plusteken (+) om een taak toe te voegen aan de agenttaak.
Zoek en selecteer PowerShell. Selecteer niet 'Azure PowerShell', 'PowerShell op doelmachines' of een andere PowerShell-vermelding.
De -Files parameter is een lijst met door komma's gescheiden lijst met beleidsbestanden die moeten worden geïmplementeerd. Werk de lijst bij met uw beleidsbestanden.
Belangrijk
Zorg ervoor dat de beleidsregels in de juiste volgorde wordt geüpload. Eerst het basisbeleid, het uitbreidingsbeleid en vervolgens het Relying Party-beleid. Bijvoorbeeld TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.
Selecteer Opslaan om de Agenttaak op te slaan.
Test uw pijplijn
Uw release-pijplijn testen:
Selecteer Pijplijnen en selecteer vervolgens Releases.
Selecteer de pijplijn die u eerder hebt gemaakt, bijvoorbeeld DeployCustomPolicies.
Selecteer Release maken en selecteer vervolgens Maken om de release in de wachtrij te plaatsen.
U ziet nu een meldingsbanner met de melding dat er een release in de wachtrij is geplaatst. Als u de status wilt weergeven, selecteert u de koppeling in de meldingsbanner of selecteert u deze in de lijst op het tabblad Releases.
Meer informatie over de typen versleutelingsbeleidssleutels die kunnen worden gebruikt in Azure Active Directory B2C voor het ondertekenen en valideren van tokens, clientgeheimen, certificaten en wachtwoorden.
Volg deze zelfstudie voor meer informatie over het maken van gebruikersstromen en aangepaste beleidsregels in Azure Portal om registratie, aanmelding en bewerking van gebruikersprofielen in te schakelen voor uw toepassingen in Azure Active Directory B2C.