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 | Obbligatorio | Descrizione |
---|---|---|
Id | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
ReferenceId | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
Order |
Sì | Ordine dei passaggi di orchestrazione. Il valore dell'attributo Order inizia da a N 1 . 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 |
Sì | Tipo del passaggio di orchestrazione. Valori possibili:
|
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 |
---|---|---|
Precondizione | 1:n | Precondizione da valutare. |
Precondizione
L'elemento Precondizione contiene gli attributi seguenti:
Attributo | Obbligatorio | Descrizione |
---|---|---|
Type |
Sì | 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 |
Sì | Decide come viene considerata soddisfatta la precondizione. Valori possibili: true o 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 ClaimEquals tipo , 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
True
oFalse
.Se l'attestazione è null o non inizializzata, la precondizione viene ignorata, indipendentemente dal fatto che sia
ExecuteActionsIf
true
ofalse
. 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:
- Pulsanti : inizia con il tipo di
ClaimsProviderSelection
oCombinedSignInAndSignUp
che contiene un elenco di opzioni tra cui un utente può scegliere. L'ordine delle opzioni all'interno dell'elementoClaimsProviderSelections
controlla l'ordine dei pulsanti presentati all'utente. - Azioni : seguito dal tipo di
ClaimsExchange
. ClaimsExchange contiene un elenco di azioni. L'azione è un riferimento a un profilo tecnico, ad esempio OAuth2, OpenID Connect, 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 | Obbligatorio | 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 | Obbligatorio | 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, X, 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 | Obbligatorio | Descrizione |
---|---|---|
Id | Sì | 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 | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
SubJourneyReferenceId | Sì | Identificatore del percorso secondario da eseguire. |