UserJourneys

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.

I percorsi utente specificano percorsi espliciti attraverso cui un criterio consente a un'applicazione relying party di ottenere le attestazioni desiderate per un utente. L'utente segue questi percorsi per recuperare le attestazioni che devono essere presentate alla relying party. In altre parole, i percorsi utente definiscono la logica di business di ciò a cui accede un utente finale mentre il framework dell'esperienza di gestione delle identità di Azure AD B2C elabora la richiesta.

Questi percorsi utente possono essere considerati modelli disponibili per soddisfare la necessità principale delle varie relying party della community di interesse. I percorsi utente facilitano la definizione della parte relying party di un criterio. Un criterio può definire più percorsi utente. Ogni percorso utente è una sequenza di passaggi di orchestrazione.

Per definire i percorsi utente supportati dai criteri, viene aggiunto un UserJourneys elemento sotto l'elemento di primo livello TrustFrameworkPolicy del file di criteri.

<TrustFrameworkPolicy  ...>
  ...
  <UserJourneys>
    ...
  </UserJourneys>
</TrustFrameworkPolicy>

L'elemento UserJourneys contiene l'elemento seguente:

Elemento Occorrenze Descrizione
UserJourney 1:n Percorso utente che definisce tutti i costrutti necessari per un flusso utente completo.

L'elemento UserJourney contiene l'attributo seguente:

Attributo Richiesto Descrizione
ID Identificatore di un percorso utente che può essere usato in modo che altri elementi nei criteri possano farvi riferimento. L'elemento DefaultUserJourney dei criteri della relying party punta a questo attributo.
DefaultCpimIssuerTechnicalProfileReferenceId No ID di riferimento del profilo tecnico dell'autorità di certificazione del token predefinito. Ad esempio, l'autorità emittente del token JWT, l'autorità emittente del token SAML o l'errore personalizzato OAuth2. Se il percorso utente o il percorso secondario ha già un altro SendClaims passaggio di orchestrazione, impostare l'attributo DefaultCpimIssuerTechnicalProfileReferenceId sul profilo tecnico dell'autorità di certificazione del token del percorso utente.

L'elemento UserJourney contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
AuthorizationTechnicalProfiles 0:1 Elenco dei profili tecnici di autorizzazione.
OrchestrationSteps 1:n Sequenza di orchestrazione da seguire per garantire l'esito positivo di una transazione. Ogni percorso utente è costituito da un elenco ordinato di passaggi di orchestrazione eseguiti in sequenza. Se un passaggio non riesce, la transazione ha esito negativo.

AuthorizationTechnicalProfiles

Si supponga che un utente abbia completato un userJourney e ottenuto un accesso o un token ID. Per gestire risorse aggiuntive, ad esempio l'endpoint UserInfo, è necessario identificare l'utente. Per iniziare questo processo, l'utente deve presentare il token di accesso rilasciato in precedenza come prova che sono stati originariamente autenticati da un criterio di Azure AD B2C valido. Un token valido per l'utente deve essere sempre presente durante questo processo per assicurarsi che l'utente possa effettuare questa richiesta. I profili tecnici di autorizzazione convalidano il token in ingresso ed estraggono le attestazioni dal token.

L'elemento AuthorizationTechnicalProfiles contiene l'elemento seguente:

Elemento Occorrenze Descrizione
AuthorizationTechnicalProfile 0:1 Riferimento al profilo tecnico usato per autorizzare l'utente.

L'elemento AuthorizationTechnicalProfile contiene l'attributo seguente:

Attributo Richiesto Descrizione
ReferenceId Identificatore del profilo tecnico da eseguire.

L'esempio seguente mostra un elemento percorso utente con profili tecnici di autorizzazione:

<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
  <Authorization>
    <AuthorizationTechnicalProfiles>
      <AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
    </AuthorizationTechnicalProfiles>
  </Authorization>
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="ClaimsExchange">
     ...

OrchestrationSteps

Un percorso utente è costituito da una sequenza di orchestrazione da seguire per garantire l'esito positivo di una transazione. Se un passaggio non riesce, la transazione ha esito negativo. Questi passaggi di orchestrazione referenziano i blocchi predefiniti e i provider di attestazioni consentiti nel file dei criteri. Qualsiasi passaggio di orchestrazione finalizzato a mostrare o eseguire il rendering di un'esperienza utente ha anche un riferimento all'identificatore della definizione del contenuto corrispondente.

I passaggi di orchestrazione possono essere eseguiti in modo condizionale in base alle precondizioni definite nell'elemento del passaggio di orchestrazione. Ad esempio, è possibile verificare di eseguire un passaggio di orchestrazione solo se esiste un'attestazione specifica o se un'attestazione è uguale o meno al valore specificato.

Per specificare l'elenco ordinato dei passaggi di orchestrazione, viene aggiunto un elemento OrchestrationSteps come parte dei criteri. Questo elemento è obbligatorio.

<UserJourney Id="SignUpOrSignIn">
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      ...

L'elemento OrchestrationSteps contiene l'elemento seguente:

Elemento Occorrenze Descrizione
OrchestrationStep 1:n Passaggio di orchestrazione ordinato.

L'elemento OrchestrationStep contiene gli attributi seguenti:

Attributo Richiesto Descrizione
Order Ordine dei passaggi di orchestrazione. Il valore dell'attributo Order inizia da a N1 . Pertanto, se sono stati 10 passaggi e si elimina il secondo passaggio, è necessario numerare i passaggi da tre a 10 per diventare due-nove.
Type Tipo del passaggio di orchestrazione. Valori possibili:
  • ClaimsProviderSelection: indica che il passaggio di orchestrazione mostra diversi provider di attestazioni all'utente per selezionarne uno.
  • CombinedSignInAndSignUp: indica che il passaggio di orchestrazione mostra una pagina combinata di accesso a provider di social network e iscrizione ad account locali.
  • ClaimsExchange: indica che il passaggio di orchestrazione scambia attestazioni con un provider di attestazioni.
  • GetClaims : specifica che il passaggio di orchestrazione deve elaborare i dati delle attestazioni inviati ad Azure AD B2C dalla relying party tramite la relativa InputClaims configurazione.
  • InvokeSubJourney : indica che il passaggio di orchestrazione scambia attestazioni con un percorso secondario.
  • SendClaims: indica che il passaggio di orchestrazione invia le attestazioni alla relying party con un token emesso da un'autorità di certificazione delle attestazioni.
ContentDefinitionReferenceId No Identificatore della definizione del contenuto associata a questo passaggio di orchestrazione. In genere l'identificatore di riferimento della definizione del contenuto viene definito nel profilo tecnico autocertificato. In alcuni casi, tuttavia, Azure AD B2C deve visualizzare un elemento senza un profilo tecnico. Esistono due esempi: se il tipo del passaggio di orchestrazione è uno dei seguenti: ClaimsProviderSelection o CombinedSignInAndSignUp, Azure AD B2C deve visualizzare la selezione del provider di identità senza avere un profilo tecnico.
CpimIssuerTechnicalProfileReferenceId No Il tipo del passaggio di orchestrazione è SendClaims. Questa proprietà definisce l'identificatore del profilo tecnico del provider di attestazioni che emette il token per la relying party. Se assente, non viene creato alcun token di relying party.

L'elemento OrchestrationStep può contenere gli elementi seguenti:

Elemento Occorrenze Descrizione
Condizioni preliminari 0:n Elenco di precondizioni che devono essere soddisfatte per l'esecuzione del passaggio di orchestrazione.
ClaimsProviderSelections 0:n Elenco di selezioni di provider di attestazioni per il passaggio di orchestrazione.
ClaimsExchanges 0:n Elenco di scambi di attestazioni per il passaggio di orchestrazione.
JourneyList 0:1 Elenco di candidati per il passaggio di orchestrazione.

Condizioni preliminari

I passaggi di orchestrazione possono essere eseguiti in modo condizionale in base alle precondizioni definite nel passaggio di orchestrazione. L'elemento Preconditions contiene un elenco di precondizioni da valutare. Quando la valutazione della precondizione viene soddisfatta, il passaggio di orchestrazione associato passa al passaggio di orchestrazione successivo.

Azure AD B2C valuta le precondizioni nell'ordine di elenco. Le precondizioni basate sull'ordine consentono di impostare l'ordine in cui vengono applicate le precondizioni. La prima precondizione soddisfatta sostituisce tutte le precondizioni successive. Il passaggio di orchestrazione viene eseguito solo se tutte le precondizioni non sono soddisfatte.

L'elemento Preconditions contiene l'elemento seguente:

Elemento Occorrenze Descrizione
Precondition 1:n Precondizione da valutare.

Precondition

L'elemento Precondizione contiene gli attributi seguenti:

Attributo Richiesto Descrizione
Type Tipo di controllo o query da eseguire per questa precondizione. Il valore 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 è uguale al valore specificato.
ExecuteActionsIf Decide come viene considerata soddisfatta la precondizione. Valori possibili: trueo false. Se il valore è impostato su true, viene considerato soddisfatto quando l'attestazione corrisponde alla precondizione. Se il valore è impostato su false, viene considerato soddisfatto quando l'attestazione non corrisponde alla precondizione.

L'elemento Precondition contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
Valore 1:2 Identificatore di un tipo di attestazione. L'attestazione è già definita nella sezione schema delle attestazioni nel file di criteri o nel file dei criteri padre. Quando la precondizione è di ClaimEqualstipo , un secondo Value elemento contiene il valore da controllare.
Azione 1:1 Azione che deve essere eseguita se la valutazione della precondizione è soddisfatta. Valore possibile: SkipThisOrchestrationStep. Il passaggio di orchestrazione associato passa a quello successivo.

Ogni precondizione valuta una singola attestazione. Esistono due tipi di precondizioni:

  • ClaimsExist : specifica che le azioni devono essere eseguite se le attestazioni specificate esistono nel contenitore di attestazioni corrente dell'utente.

  • ClaimEquals : specifica che le azioni devono essere eseguite se l'attestazione specificata esiste e il relativo valore è uguale al valore specificato. Il controllo esegue un confronto ordinale con distinzione tra maiuscole e minuscole. Quando si controlla il tipo di attestazione booleana, usare Trueo False.

    Se l'attestazione è null o non inizializzata, la precondizione viene ignorata, indipendentemente dal fatto che sia ExecuteActionsIftrueo false. Come procedura consigliata, verificare che l'attestazione esista e sia uguale a un valore.

Uno scenario di esempio consiste nel richiedere all'utente l'autenticazione a più fattori se l'utente ha MfaPreference impostato su Phone. Per eseguire questa logica condizionale, verificare se l'attestazione esiste e controllare anche il valore dell'attestazione MfaPreference uguale a Phone. Il codice XML seguente illustra come implementare questa logica con precondizioni.  

<Preconditions>
  <!-- Skip this orchestration step if MfaPreference doesn't exist. -->
  <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
    <Value>MfaPreference</Value>
    <Action>SkipThisOrchestrationStep</Action>
  </Precondition>
  <!-- Skip this orchestration step if MfaPreference doesn't equal to Phone. -->
  <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
    <Value>MfaPreference</Value>
    <Value>Phone</Value>
    <Action>SkipThisOrchestrationStep</Action>
  </Precondition>
</Preconditions>

Esempi di precondizioni

Le precondizioni seguenti determinano l'esistenza del valore objectId dell'utente. Nel percorso utente l'utente ha scelto di eseguire l'accesso con l'account locale. Se il valore objectId è presente, ignorare questo passaggio di orchestrazione.

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

Le precondizioni seguenti determinano se l'utente ha eseguito l'accesso con un account di social network. Viene effettuato un tentativo per trovare l'account utente nella directory. Se l'utente accede o effettua l'iscrizione con un account locale, ignorare questo passaggio di orchestrazione.

<OrchestrationStep Order="3" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
      <Value>authenticationSource</Value>
      <Value>localAccountAuthentication</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
  </ClaimsExchanges>
</OrchestrationStep>

Le precondizioni possono verificare più precondizioni. L'esempio seguente determina se è presente 'objectId' o 'email'. Se la prima condizione è true, il percorso passa al passaggio di orchestrazione successivo.

<OrchestrationStep Order="4" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>email</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="SelfAsserted-SocialEmail" TechnicalProfileReferenceId="SelfAsserted-SocialEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

Selezione del provider di attestazioni

La selezione del provider di attestazioni consente agli utenti di selezionare un'azione da un elenco di opzioni. La selezione del provider di identità è costituita da una coppia di due passaggi di orchestrazione:

  1. Pulsanti : inizia con il tipo di ClaimsProviderSelectiono CombinedSignInAndSignUp che contiene un elenco di opzioni tra cui un utente può scegliere. L'ordine delle opzioni all'interno dell'elemento ClaimsProviderSelections controlla l'ordine dei pulsanti presentati all'utente.
  2. Azioni : seguito dal tipo di ClaimsExchange. ClaimsExchange contiene un elenco di azioni. L'azione è un riferimento a un profilo tecnico, ad esempio OAuth2, OpenID Connessione, trasformazione delle attestazioni o autocertificazione. Quando un utente fa clic su uno dei pulsanti, viene eseguita l'azione corrispondente.

L'elemento ClaimsProviderSelections contiene l'elemento seguente:

Elemento Occorrenze Descrizione
ClaimsProviderSelection 1:n Fornisce l'elenco dei provider di attestazioni che possono essere selezionati.

L'elemento ClaimsProviderSelections contiene gli attributi seguenti:

Attributo Richiesto Descrizione
DisplayOption No Controlla il comportamento di un caso in cui è disponibile una selezione di un singolo provider di attestazioni. Valori possibili: DoNotShowSingleProvider (impostazione predefinita), l'utente viene reindirizzato immediatamente al provider di identità federato. In alternativa ShowSingleProvider , Azure AD B2C presenta la pagina di accesso con la selezione del singolo provider di identità. Per usare questo attributo, la versione della definizione del contenuto deve essere urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 e versioni successive.

L'elemento ClaimsProviderSelection contiene gli attributi seguenti:

Attributo Richiesto Descrizione
TargetClaimsExchangeId No Identificatore dello scambio di attestazioni, eseguito nel passaggio successivo di selezione dei provider di attestazioni. È necessario specificare questo attributo o l'attributo ValidationClaimsExchangeId, ma non entrambi.
ValidationClaimsExchangeId No Identificatore dello scambio di attestazioni, eseguito nel passaggio corrente di convalida della selezione dei provider di attestazioni. È necessario specificare questo attributo o l'attributo TargetClaimsExchangeId, ma non entrambi.

Esempio di selezione del provider di attestazioni

Nel passaggio di orchestrazione seguente, l'utente può scegliere di accedere con Facebook, LinkedIn, Twitter, Google o un account locale. Se l'utente sceglie uno dei provider di identità di social networking, il secondo passaggio di orchestrazione viene eseguito con lo scambio di attestazioni selezionato specificato nell'attributo TargetClaimsExchangeId. Il secondo passaggio di orchestrazione reindirizza l'utente al provider di identità di social network per completare il processo di accesso. Se l'utente sceglie di eseguire l'accesso con l'account locale, Azure AD B2C rimane nello stesso passaggio di orchestrazione (la stessa pagina di iscrizione o accesso) e ignora il secondo passaggio.

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="TwitterExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
    <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
  </ClaimsProviderSelections>
  <ClaimsExchanges>
  <ClaimsExchange Id="LocalAccountSigninEmailExchange"
        TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
  </ClaimsExchanges>
</OrchestrationStep>


<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
    <ClaimsExchange Id="TwitterExchange" TechnicalProfileReferenceId="Twitter-OAUTH1" />
  </ClaimsExchanges>
</OrchestrationStep>

ClaimsExchanges

L'elemento ClaimsExchanges contiene l'elemento seguente:

Elemento Occorrenze Descrizione
ClaimsExchange 1:n In base al profilo tecnico in uso, reindirizza il client in base al valore ClaimsProviderSelection selezionato o esegue una chiamata al server per lo scambio di attestazioni.

L'elemento ClaimsExchange contiene gli attributi seguenti:

Attributo Richiesto Descrizione
ID Identificatore del passaggio di scambio di attestazioni. L'identificatore viene usato per referenziare lo scambio di attestazioni da un passaggio di selezione dei provider di attestazioni nei criteri.
TechnicalProfileReferenceId Identificatore del profilo tecnico da eseguire.

JourneyList

L'elemento JourneyList contiene l'elemento seguente:

Elemento Occorrenze Descrizione
Candidato 1:1 Riferimento a un percorso secondario da chiamare.

Candidato

L'elemento Candidate contiene gli attributi seguenti:

Attributo Richiesto Descrizione
SubJourneyReferenceId Identificatore del percorso secondario da eseguire.