Gestire i criteri personalizzati di Azure AD B2C con Azure PowerShell

Azure PowerShell offre diversi cmdlet per la gestione dei criteri personalizzati basata su script e riga di comando nel tenant di Azure AD B2C. Informazioni su come usare il modulo Azure AD PowerShell per:

  • Elencare i criteri personalizzati in un tenant di Azure AD B2C
  • Scaricare un criterio da un tenant
  • Aggiornare un criterio esistente sovrascrivendone il contenuto
  • Caricare un nuovo criterio nel tenant di Azure AD B2C
  • Eliminare un criterio personalizzato da un tenant

Prerequisiti

Connettere la sessione di PowerShell al tenant B2C

Per usare i criteri personalizzati nel tenant di Azure AD B2C, è prima necessario connettere la sessione di PowerShell al tenant usando il comando Connect-AzureAD .

Eseguire il comando seguente sostituendo {b2c-tenant-name} con il nome del tenant di Azure AD B2C. Accedere con un account a cui è assegnato il ruolo Amministratore criteri IEF B2C nella directory.

Connect-AzureAD -Tenant "{b2c-tenant-name}.onmicrosoft.com"

Output del comando di esempio che mostra un accesso riuscito:

PS C:\> Connect-AzureAD -Tenant "contosob2c.onmicrosoft.com"

Account               Environment TenantId                             TenantDomain                 AccountType
-------               ----------- --------                             ------------                 -----------
azureuser@contoso.com AzureCloud  00000000-0000-0000-0000-000000000000 contosob2c.onmicrosoft.com   User

Elencare tutti i criteri personalizzati nel tenant

L'individuazione di criteri personalizzati consente a un amministratore di Azure AD B2C di esaminare, gestire e aggiungere logica di business alle operazioni. Usare il comando Get-AzureADMSTrustFrameworkPolicy per restituire un elenco degli ID dei criteri personalizzati in un tenant di Azure AD B2C.

Get-AzureADMSTrustFrameworkPolicy

Output del comando di esempio:

PS C:\> Get-AzureADMSTrustFrameworkPolicy

Id
--
B2C_1A_TrustFrameworkBase
B2C_1A_TrustFrameworkExtensions
B2C_1A_signup_signin
B2C_1A_ProfileEdit
B2C_1A_PasswordReset

Scaricare un criterio

Dopo aver esaminato l'elenco degli ID dei criteri, è possibile specificare come destinazione un criterio specifico con Get-AzureADMSTrustFrameworkPolicy per scaricarne il contenuto.

Get-AzureADMSTrustFrameworkPolicy [-Id <policyId>]

In questo esempio viene scaricato il criterio con ID B2C_1A_signup_signin :

PS C:\> Get-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="contosob2c.onmicrosoft.com" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://contosob2c.onmicrosoft.com/B2C_1A_signup_signin" TenantObjectId="00000000-0000-0000-0000-000000000000">
  <BasePolicy>
    <TenantId>contosob2c.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>

Per modificare il contenuto dei criteri in locale, inviare tramite pipe l'output del comando a un file con l'argomento e quindi aprire il file nell'editor -OutputFilePath preferito.

Comando di esempio che invia output a un file:

# Download and send policy output to a file
Get-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -OutputFilePath C:\RPPolicy.xml

Aggiornare un criterio esistente

Dopo aver modificato un file di criteri creato o scaricato, è possibile pubblicare i criteri aggiornati in Azure AD B2C usando il comando Set-AzureADMSTrustFrameworkPolicy .

Se si esegue il Set-AzureADMSTrustFrameworkPolicy comando con l'ID di un criterio già esistente nel tenant di Azure AD B2C, il contenuto di tale criterio viene sovrascritto.

Set-AzureADMSTrustFrameworkPolicy [-Id <policyId>] -InputFilePath <inputpolicyfilePath> [-OutputFilePath <outputFilePath>]

Comando di esempio:

# Update an existing policy from file
Set-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -InputFilePath C:\B2C_1A_signup_signin.xml

Per altri esempi, vedere le informazioni di riferimento sui comandi Set-AzureADMSTrustFrameworkPolicy .

Caricare un nuovo criterio

Quando si apporta una modifica a un criterio personalizzato in esecuzione nell'ambiente di produzione, è possibile pubblicare più versioni dei criteri per gli scenari di fallback o di test A/B. In alternativa, è possibile creare una copia di un criterio esistente, modificarla con alcune piccole modifiche, quindi caricarla come nuovo criterio per l'uso da parte di un'applicazione diversa.

Usare il comando New-AzureADMSTrustFrameworkPolicy per caricare un nuovo criterio:

New-AzureADMSTrustFrameworkPolicy -InputFilePath <inputpolicyfilePath> [-OutputFilePath <outputFilePath>]

Comando di esempio:

# Add new policy from file
New-AzureADMSTrustFrameworkPolicy -InputFilePath C:\SignUpOrSignInv2.xml

Eliminare un criterio personalizzato

Per mantenere un ciclo di vita delle operazioni pulite, è consigliabile rimuovere periodicamente i criteri personalizzati inutilizzati. Ad esempio, è possibile rimuovere le versioni precedenti dei criteri dopo aver eseguito una migrazione a un nuovo set di criteri e verificare la funzionalità dei nuovi criteri. Inoltre, se si tenta di pubblicare un set di criteri personalizzati e si riceve un errore, potrebbe essere opportuno rimuovere i criteri creati come parte della versione non riuscita.

Usare il comando Remove-AzureADMSTrustFrameworkPolicy per eliminare un criterio dal tenant.

Remove-AzureADMSTrustFrameworkPolicy -Id <policyId>

Comando di esempio:

# Delete an existing policy
Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin

Risolvere i problemi di caricamento dei criteri

Quando si tenta di pubblicare un nuovo criterio personalizzato o di aggiornare un criterio esistente, la formattazione XML non corretta e gli errori nella catena di ereditarietà dei file dei criteri possono causare errori di convalida.

Ad esempio, ecco un tentativo di aggiornamento di un criterio con contenuto contenente codice XML in formato non valido (l'output viene troncato per brevità):

PS C:\> Set-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -InputFilePath C:\B2C_1A_signup_signin.xml
Set-AzureADMSTrustFrameworkPolicy : Error occurred while executing PutTrustFrameworkPolicy
Code: AADB2C
Message: Validation failed: 1 validation error(s) found in policy "B2C_1A_SIGNUP_SIGNIN" of tenant "contosob2c.onmicrosoft.com".Schema validation error found at line
14 col 55 in policy "B2C_1A_SIGNUP_SIGNIN" of tenant "contosob2c.onmicrosoft.com": The element 'OutputClaims' in namespace
'http://schemas.microsoft.com/online/cpim/schemas/2013/06' cannot contain text. List of possible elements expected: 'OutputClaim' in namespace
'http://schemas.microsoft.com/online/cpim/schemas/2013/06'.
...

Per informazioni sulla risoluzione dei problemi relativi ai criteri personalizzati, vedere Risolvere i problemi relativi ai criteri personalizzati di Azure AD B2C e al framework dell'esperienza di gestione delle identità.

Passaggi successivi

Per informazioni sull'uso di PowerShell per distribuire criteri personalizzati come parte di una pipeline di integrazione continua/recapito continuo (CI/CD), vedere Distribuire criteri personalizzati da una pipeline di Azure DevOps.