UserJourneys

Observação

No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.

Percursos do usuário especificam caminhos explícitos por meio dos quais uma política permite que um aplicativo de terceira parte confiável obtenhas as declarações desejadas para um usuário. O usuário passa por esses caminhos para recuperar as declarações que devem ser apresentadas para a terceira parte confiável. Em outras palavras, os percursos do usuário definem a lógica de negócios pela qual o usuário final passa conforme o Framework de Experiência de Identidade do Azure AD B2C processa a solicitação.

Esses percursos do usuário podem ser considerados modelos disponíveis para satisfazer às necessidades principais das várias terceiras partes confiáveis da comunidade de interesse. Os percursos do usuário facilitam a definição da parte da terceira parte confiável de uma política. Uma política pode definir vários percursos do usuário. Cada percurso do usuário é uma sequência de etapas de orquestração.

Para definir os percursos do usuário com suporte da política, um elemento UserJourneys é adicionado sob o elemento TrustFrameworkPolicy de nível superior do arquivo de política.

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

O elemento UserJourneys contém o seguinte elemento:

Elemento Ocorrências Descrição
UserJourney 1:n Um percurso do usuário que define todos os constructos necessários para um fluxo completo do usuário.

O elemento UserJourney contém o seguinte atributo:

Atributo Obrigatório Descrição
ID Sim Um identificador de um percurso do usuário que pode ser usado para referenciá-lo de outros elementos na política. O elemento DefaultUserJourney da política de terceira parte confiável aponta para esse atributo.
DefaultCpimIssuerTechnicalProfileReferenceId Não A ID de referência do perfil técnico do emissor do token padrão. Por exemplo, emissor do token JWT, emissor do token SAML ou erro personalizado de OAuth2. Se o percurso ou o subpercurso do usuário já tiver outra etapa de orquestração SendClaims, defina o atributo DefaultCpimIssuerTechnicalProfileReferenceId como o perfil técnico do emissor do token do percurso do usuário.

O elemento UserJourney contém os seguintes elementos:

Elemento Ocorrências Descrição
AuthorizationTechnicalProfiles 0:1 Lista de perfis técnicos de autorização.
OrchestrationSteps 1:n Uma sequência de orquestração que deve ser seguida para ter uma transação bem-sucedida. Cada percurso do usuário consiste de uma lista ordenada de etapas de orquestração que são executadas em sequência. Se alguma delas falhar, a transação falhará.

AuthorizationTechnicalProfiles

Suponha que um usuário tenha concluído um UserJourney e obtido um token de acesso ou de ID. Para gerenciar recursos adicionais, como o ponto de extremidade UserInfo, o usuário deve ser identificado. Para iniciar esse processo, o usuário deve apresentar o token de acesso emitido anteriormente como prova de que ele foi autenticado originalmente por uma política válida do Azure AD B2C. Um token válido do usuário sempre deve estar presente durante esse processo para garantir que o usuário tenha permissão para fazer essa solicitação. Os perfis técnicos de autorização validam o token de entrada e extraem declarações do token.

O elemento AuthorizationTechnicalProfiles contém o seguinte elemento:

Elemento Ocorrências Descrição
AuthorizationTechnicalProfile 0:1 A referência de perfil técnico usada para autorizar o usuário.

O elemento AuthorizationTechnicalProfile contém o seguinte atributo:

Atributo Obrigatório Descrição
ReferenceId Sim O identificador do perfil técnico que deve ser executado.

O seguinte exemplo mostra um elemento de percurso do usuário com perfis técnicos de autorização:

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

OrchestrationSteps

Um percurso do usuário é representado como uma sequência de orquestração que deve ser seguida para ter uma transação bem-sucedida. Se alguma delas falhar, a transação falhará. Essas etapas de orquestração fazem referência aos blocos de construção e aos provedores de declarações permitidos no arquivo de política. Qualquer etapa de orquestração responsável por mostrar ou renderizar uma experiência do usuário também tem uma referência ao identificador de definição do conteúdo correspondente.

As etapas de orquestração podem ser executadas condicionalmente com base nas condições prévias definidas no elemento da etapa de orquestração. Por exemplo, você pode optar por executar uma etapa de orquestração somente se houver uma declaração específica ou se uma declaração for igual ou não ao valor especificado.

Para especificar a lista ordenada de etapas de orquestração, um elemento OrchestrationSteps é adicionado como parte da política. Este elemento é obrigatório.

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

O elemento OrchestrationSteps contém o seguinte elemento:

Elemento Ocorrências Descrição
OrchestrationStep 1:n Uma etapa de orquestração ordenada.

O elemento OrchestrationStep contém os seguintes atributos:

Atributo Obrigatório Descrição
Order Sim A ordem das etapas de orquestração. O valor do Order atributo começa em 1 até N. Então, se você tiver 10 etapas e excluir a segunda etapa, precisará renumerar as etapas de três para 10 para se tornar duas para nove.
Type Sim O tipo da etapa de orquestração. Valores possíveis:
  • ClaimsProviderSelection – indica que a etapa de orquestração apresenta vários provedores de declarações para o usuário selecionar um.
  • CombinedSignInAndSignUp – indica que a etapa de orquestração apresenta uma conexão de provedor social combinada e uma página de entrada de conta local.
  • ClaimsExchange – indica que a etapa de orquestração troca declarações com um provedor de declarações.
  • GetClaims – especifica que a etapa de orquestração deve processar dados de declaração enviados ao Azure AD B2C pela terceira parte confiável por meio de sua configuração InputClaims.
  • InvokeSubJourney – Indica que a etapa de orquestração troca declarações com um subpercurso.
  • SendClaims – indica que a etapa de orquestração envia as declarações à terceira parte confiável com um token emitido por um emissor de declarações.
ContentDefinitionReferenceId Não O identificador da definição de conteúdo associada com esta etapa de orquestração. Geralmente, o identificador de referência da definição de conteúdo é definido no perfil técnico autodeclarado. No entanto, há alguns casos em que o Azure AD B2C precisa exibir algo sem um perfil técnico. Há dois exemplos; se o tipo da etapa de orquestração for ClaimsProviderSelection ou CombinedSignInAndSignUp, o Azure AD B2C precisará exibir a seleção do provedor de identidade sem ter um perfil técnico.
CpimIssuerTechnicalProfileReferenceId Não O tipo da etapa de orquestração é SendClaims. Esta propriedade define o identificador do perfil técnico do provedor de declarações que emite o token para a terceira parte confiável. Se ausente, nenhum token de terceira parte confiável será criado.

O elemento OrchestrationStep pode conter um dos seguintes elementos:

Elemento Ocorrências Descrição
Pré-condições 0:n Uma lista de pré-condições que devem ser atendidas para que a etapa de orquestração seja executada.
ClaimsProviderSelections 0:n Uma lista de seleções do provedor de declarações para a etapa de orquestração.
ClaimsExchanges 0:n Uma lista de trocas de declarações para a etapa de orquestração.
JourneyList 0:1 Uma lista de candidatos a subpercurso para a etapa de orquestração.

Pré-condições

As etapas de orquestração podem ser executadas condicionalmente com base nas condições prévias definidas na etapa de orquestração. O elemento Preconditions contém uma lista de pré-condições a serem avaliadas. Quando a avaliação da pré-condição é satisfeita, a etapa de orquestração associada passa para a próxima etapa de orquestração.

O Azure AD B2C avalia as pré-condições na ordem da lista. As pré-condições bom base na ordem permitem definir a ordem na qual as pré-condições são aplicadas. A primeira pré-condição satisfeita substitui todas as pré-condições posteriores. A etapa de orquestração será executada somente se todas as pré-condições não forem satisfeitas.

O elemento Preconditions contém o seguinte elemento:

Elemento Ocorrências Descrição
Pré-condição 1:n Uma pré-condição a ser avaliada.

Pré-condição

O elemento Precondition contém os seguintes atributos:

Atributo Obrigatório Descrição
Type Sim O tipo de verificação ou consulta ser executada para essa pré-condição. O valor poderá ser ClaimsExist, que especifica que as ações deverão ser executadas se as declarações especificadas existirem no conjunto de declarações do usuário atual, ou ClaimEquals, que especifica que as ações deverão ser executadas se a declaração especificada existir e seu valor for igual ao valor especificado.
ExecuteActionsIf Sim Decide como a pré-condição é considerada satisfeita. Valores possíveis: true ou false. Se o valor for definido como true, ele será considerado satisfeito quando a declaração corresponder à pré-condição. Se o valor for definido como false, ele será considerado satisfeito quando a declaração não corresponder à pré-condição.

O elemento Precondition contém os seguintes elementos:

Elemento Ocorrências Descrição
Valor 1:2 O identificador de um tipo de declaração. A declaração já está definida na seção de esquema de declarações no arquivo de política ou no arquivo de política pai. Quando a pré-condição é do tipo ClaimEquals, um segundo elemento Value terá o valor a ser verificado.
Ação 1:1 A ação que deverá ser realizada se a avaliação da pré-condição for satisfeita. Valor possível: SkipThisOrchestrationStep. A etapa de orquestração associada pula para a próxima.

Cada pré-condição avalia uma só declaração. Existem dois tipos de pré-condições:

  • ClaimsExist – especifica que as ações deverão ser executadas se as declarações especificadas existirem no conjunto de declarações atual do usuário.

  • ClaimEquals – especifica que as ações deverão ser executadas se a declaração especificada existir e seu valor for igual ao valor especificado. A verificação executa uma comparação ordinal que diferencia maiúsculas de minúsculas. Ao verificar o tipo de declaração booliana, use True ou False.

    Se a declaração for nula ou não reinicializada, a pré-condição será ignorada, independentemente de ExecuteActionsIf ser true ou false. Como melhor prática, verifique se a declaração existe e se é igual a um valor.

Um cenário de exemplo seria desafiar o usuário para a MFA se o usuário tiver definido MfaPreference como Phone. Para executar essa lógica condicional, verifique se a declaração MfaPreference existe e também verifique se o valor da declaração é igual a Phone. O XML a seguir demonstra como implementar essa lógica com pré-condições.  

<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>

Exemplos de pré-condições

As pré-condições a seguir verificam se o objectId do usuário existe. No percurso do usuário, o usuário optou por entrar usando a conta local. Se a objectId existir, ignore esta etapa de orquestração.

<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>

As pré-condições a seguir verificam se o usuário se conectou usando uma conta social. É feita uma tentativa de encontrar a conta do usuário no diretório. Se o usuário se conectar ou se inscrever com uma conta local, ignore esta etapa de orquestração.

<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>

As pré-condições podem verificar várias pré-condições. O exemplo a seguir verifica se 'objectId' ou 'email' existe. Se a primeira condição for verdadeira, o percurso passará para a próxima etapa de orquestração.

<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>

Seleção do provedor de declarações

A seleção do provedor de declarações permite que os usuários selecionem uma ação em uma lista de opções. A seleção do provedor de identidade consiste em um par de etapas de orquestração:

  1. Botões – ela começa com o tipo ClaimsProviderSelection ou CombinedSignInAndSignUp que contém uma lista de opções entre as quais um usuário pode escolher. A ordem das opções dentro do elemento ClaimsProviderSelections controla a ordem dos botões apresentados para o usuário.
  2. Ações – seguidas pelo tipo ClaimsExchange. ClaimsExchange contém a lista de ações. A ação é uma referência a um perfil técnico, como OAuth2, OpenID Connect, transformação de declarações ou autodeclarado. Quando um usuário clica em um dos botões, a ação correspondente é executada.

O elemento ClaimsProviderSelections contém o seguinte elemento:

Elemento Ocorrências Descrição
ClaimsProviderSelection 1:n Fornece a lista de provedores de declarações que podem ser selecionados.

O elemento ClaimsProviderSelections contém os seguintes atributos:

Atributo Obrigatório Descrição
DisplayOption Não Controla o comportamento de um caso em que apenas uma seleção de provedor de declarações está disponível. Valores possíveis: DoNotShowSingleProvider (padrão), o usuário é redirecionado imediatamente para o provedor de identidade federada. Ou ShowSingleProvider, o Azure AD B2C apresenta a página de entrada com a seleção do provedor de identidade único. Para usar esse atributo, a versão de definição do conteúdo deve ser urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 e acima.

O elemento ClaimsProviderSelection contém os seguintes atributos:

Atributo Obrigatório Descrição
TargetClaimsExchangeId Não O identificador da troca de declarações, que é executado na próxima etapa de orquestração da seleção do provedor de declarações. Esse atributo ou o atributo ValidationClaimsExchangeId deve ser especificado, mas não ambos.
ValidationClaimsExchangeId Não O identificador da troca de declarações, que é executado na etapa de orquestração atual para validar a seleção do provedor de declarações. Esse atributo ou o atributo TargetClaimsExchangeId deve ser especificado, mas não ambos.

Exemplo de seleção do provedor de declarações

Na etapa de orquestração a seguir, o usuário pode optar por entrar usando uma conta local, do LinkedIn, Twitter, Google ou Facebook. Se o usuário selecionar um dos provedores de identidade social, a segunda etapa de orquestração será executada com a troca de declaração selecionada especificada no atributo TargetClaimsExchangeId. A segunda etapa de orquestração redireciona o usuário para o provedor de identidade social para concluir o processo de conexão. Se o usuário optar por se conectar com a conta local, o Azure AD B2C permanecerá na mesma etapa de orquestração (a mesma página de conexão ou de entrada) e ignorará a segunda etapa de orquestração.

<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

O elemento ClaimsExchanges contém o seguinte elemento:

Elemento Ocorrências Descrição
ClaimsExchange 1:n Dependendo do perfil técnico usado, redireciona o cliente de acordo com a seleção do ClaimsProviderSelection ou faz uma chamada de servidor para trocar declarações.

O elemento ClaimsExchange contém os seguintes atributos:

Atributo Obrigatório Descrição
ID Sim Um identificador da etapa de troca de declarações. O identificador é usado para referenciar a troca de declarações para uma etapa da seleção do provedor de declarações na política.
TechnicalProfileReferenceId Sim O identificador do perfil técnico que deve ser executado.

JourneyList

O elemento JourneyList contém o seguinte elemento:

Elemento Ocorrências Descrição
Candidato 1:1 Uma referência a um subpercurso a ser chamado.

Candidato

O elemento Candidate contém os seguintes atributos:

Atributo Obrigatório Descrição
SubJourneyReferenceId Sim O identificador do subpercurso a ser executado.