Definire un profilo tecnico di convalida in un criterio personalizzato di Azure Active Directory B2C

Nota

In Azure Active Directory B2C i criteri personalizzati sono stati progettati principalmente per far fronte a scenari complessi. Per la maggior parte degli scenari, è consigliabile usare i flussi utente predefiniti. In caso contrario, vedere Introduzione ai criteri personalizzati in Active Directory B2C.

Un profilo tecnico di convalida è un profilo tecnico ordinario da qualsiasi protocollo, ad esempio Microsoft Entra ID o un'API REST. Il profilo tecnico di convalida restituisce attestazioni di output o restituisce il codice di stato HTTP 4xx con i dati seguenti. Per altre informazioni, vedere restituzione del messaggio di errore

{
    "version": "1.0.0",
    "status": 409,
    "userMessage": "Your error message"
}

L'ambito delle attestazioni di output di un profilo tecnico di convalida è limitato al profilo tecnico autocertivo che richiama il profilo tecnico di convalida e ai relativi profili tecnici di convalida. Se si desidera usare le attestazioni di output nel passaggio successivo dell'orchestrazione, aggiungere le attestazioni di output al profilo tecnico autocertivo che richiama il profilo tecnico di convalida.

I profili tecnici di convalida vengono eseguiti nella sequenza in cui compaiono nell'elemento ValidationTechnicalProfiles. In un profilo tecnico di convalida è possibile configurare se l'esecuzione di qualsiasi profilo tecnico di convalida successivo dovrà continuare nel caso in cui il profilo generi un errore o abbia esito positivo.

Un profilo tecnico di convalida può essere eseguito in modo condizionale in base alle precondizioni definite nell'elemento ValidationTechnicalProfile. Ad esempio, è possibile verificare se esiste un'attestazione specifica o se un'attestazione è uguale o meno al valore specificato.

Un profilo tecnico autocertificato può stabilire che un profilo tecnico venga usato per la convalida di alcune o di tutte le attestazioni di output. Tutte le attestazioni di input del profilo tecnico a cui si fa riferimento devono essere visualizzate nelle attestazioni di output del profilo tecnico di convalida di riferimento.

Nota

Solo i profili tecnici autocertificati possono usare profili tecnici di convalida. Se è necessario convalidare le attestazioni di output da profili tecnici non autocertificati, è consigliabile usare un passaggio di orchestrazione aggiuntivo nel percorso utente per supportare il profilo tecnico responsabile della convalida.

ValidationTechnicalProfiles

L'elemento ValidationTechnicalProfiles contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
ValidationTechnicalProfile 1:n Profilo tecnico da usare per la convalida di alcune o di tutte le attestazioni di output del profilo tecnico di riferimento.

L'elemento ValidationTechnicalProfile contiene gli attributi seguenti:

Attributo Richiesto Descrizione
ReferenceId Identificatore di un profilo tecnico già definito nei criteri o nei criteri padre.
ContinueOnError No Indica se la convalida di eventuali profili tecnici di convalida successivi deve continuare se questo profilo tecnico di convalida genera un errore. Valori possibili: true o false (valore predefinito, l'elaborazione di ulteriori profili di convalida verrà arrestata e verrà restituito un errore).
ContinueOnSuccess No Indica se la convalida di tutti i profili tecnici successivi deve continuare nel caso in cui il profilo tecnico di convalida corrente abbia esito positivo. I valori possibili sono: true o false. Il valore predefinito è true, che significa che continuerà l'elaborazione di ulteriori profili di convalida.

Nota

Attualmente, se si imposta ContinueOnError su false per un profilo tecnico di convalida di tipo ClaimsTransformation, il profilo tecnico non rispetta l'impostazione. Per risolvere questo problema, usare invece precondizioni.

L'elemento ValidationTechnicalProfile contiene l'elemento seguente:

Elemento Occorrenze Descrizione
Condizioni preliminari 0:1 Elenco di precondizioni che devono essere soddisfatte per consentire l'esecuzione del profilo tecnico di convalida.

L'elemento Precondition contiene gli attributi seguenti:

Attributo Richiesto Descrizione
Type Tipo di controllo o query da eseguire per la precondizione. Il valore specificato può essere ClaimsExist, a indicare che le azioni devono essere eseguite se le attestazioni specificate esistono nel set di attestazioni corrente dell'utente, oppure ClaimEquals, a indicare che le azioni devono essere eseguite se l'attestazione specificata esiste e il relativo valore corrisponde al valore specificato.
ExecuteActionsIf Indica se le azioni incluse nella precondizione devono essere eseguite nel caso in cui il test sia true o false.

L'elemento Precondition contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
Valore 1:n Dati usati dal controllo. Se il controllo è di tipo ClaimsExist, in questo campo viene specificato un valore di ClaimTypeReferenceId per il quale eseguire query. Se il controllo è di tipo ClaimEquals, in questo campo viene specificato un valore di ClaimTypeReferenceId per il quale eseguire query, mentre un altro elemento Value contiene il valore da controllare.
Azione 1:1 Azione da eseguire se il controllo della precondizione all'interno di un passaggio di orchestrazione è true. Il valore di Action è SkipThisValidationTechnicalProfile. Specifica che il profilo tecnico convalida associato non deve essere eseguito.

Esempio

Questo esempio usa i profili tecnici di convalida seguenti:

  1. Il primo profilo tecnico di convalida controlla le credenziali utente e non continua se si verifica un errore, ad esempio viene rilevato un nome utente non valido o una password errata.
  2. Il profilo tecnico di convalida successivo non viene eseguito se l'attestazione userType non esiste o se il valore di userType è Partner. Il profilo tecnico di convalida prova a leggere il profilo utente dal database clienti interno e continua se si verifica un errore, ad esempio se il servizio API REST non è disponibile o in caso di errore interno.
  3. L'ultimo profilo tecnico di convalida non viene eseguito se l'attestazione userType non esiste o se il valore di userType è Customer. Il profilo tecnico di convalida prova a leggere il profilo utente dal database dei clienti interno e continua se si verifica un errore, ad esempio se il servizio API REST non è disponibile o in caso di errore interno.
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" ContinueOnError="false" />
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromCustomersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Partner</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromPartnersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Customer</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
</ValidationTechnicalProfiles>