UserJourneys

Nota

No Azure Ative Directory B2C, as políticas personalizadas são projetadas principalmente para lidar com cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuário internos. Se você não tiver feito isso, saiba mais sobre o pacote inicial de políticas personalizadas em Introdução às políticas personalizadas no Ative Directory B2C.

Os percursos do utilizador especificam caminhos explícitos através dos quais uma política permite que uma aplicação de entidade confiadora obtenha as afirmações desejadas para um utilizador. O utilizador utiliza estes caminhos para obter as afirmações que devem ser apresentadas à entidade confiadora. Em outras palavras, as jornadas do usuário definem a lógica de negócios do que um usuário final passa à medida que a Estrutura de Experiência de Identidade B2C do Azure AD processa a solicitação.

Essas jornadas do usuário podem ser consideradas como modelos disponíveis para satisfazer a necessidade central das várias partes confiáveis da comunidade de interesse. As jornadas do usuário facilitam a definição da parte confiável de uma política. Uma política pode definir várias jornadas de usuário. Cada jornada do usuário é uma sequência de etapas de orquestração.

Para definir as jornadas do usuário suportadas pela política, um UserJourneys elemento é adicionado sob o elemento de nível TrustFrameworkPolicy superior do arquivo de política.

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

O elemento UserJourneys contém o seguinte elemento :

Elemento Ocorrências Description
Jornada do usuário 1:n Uma jornada do usuário que define todas as construções necessárias para um fluxo de usuário completo.

O elemento UserJourney contém o seguinte atributo:

Atributo Obrigatório Descrição
ID Sim Um identificador de uma jornada do usuário que pode ser usado para fazer referência a ela a partir de outros elementos da política. O elemento DefaultUserJourney da política de terceira parte confiável aponta para esse atributo.
DefaultCpimIssuerTechnicalProfileReferenceId Não O ID de referência de perfil técnico do emissor de token padrão. Por exemplo, emissor de token JWT, emissor de token SAML ou erro personalizado OAuth2. Se sua jornada ou subjornada do usuário já tiver outra SendClaims etapa de orquestração, defina o atributo para o DefaultCpimIssuerTechnicalProfileReferenceId perfil técnico do emissor de token da jornada do usuário.

O elemento UserJourney contém os seguintes elementos:

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

AutorizaçãoPerfis Técnicos

Suponha que um usuário tenha concluído uma UserJourney e obtido um acesso ou um token 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 foi originalmente autenticado por uma política válida do Azure AD B2C. Um token válido para o usuário deve estar sempre 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 Description
AutorizaçãoPerfil Técnico 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 Description
ReferenceId Sim O identificador do perfil técnico a ser executado.

O exemplo a seguir mostra um elemento de jornada 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

Uma jornada do usuário é representada como uma sequência de orquestração que deve ser seguida para uma transação bem-sucedida. Se alguma etapa 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 de conteúdo correspondente.

As etapas de orquestração podem ser executadas condicionalmente com base em pré-condições definidas no elemento da etapa de orquestração. Por exemplo, você pode verificar a execução de uma etapa de orquestração somente se existir 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 Description
OrchestrationStep 1:n Um passo de orquestração ordenado.

O elemento OrchestrationStep contém os seguintes atributos:

Atributo Obrigatório Descrição
Order Sim A ordem dos passos 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 a 10 para se tornar de duas a nove.
Type Sim O tipo de etapa de orquestração. Valores possíveis:
  • ClaimsProviderSelection - Indica que a etapa de orquestração apresenta vários provedores de declarações ao usuário para selecionar um.
  • CombinedSignInAndSignUp - Indica que a etapa de orquestração apresenta uma página combinada de entrada de provedor social e de inscrição 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 para o Azure AD B2C da terceira parte confiável por meio de sua InputClaims configuração.
  • InvokeSubJourney - Indica que a etapa de orquestração troca declarações com uma subjornada.
  • SendClaims - Indica que a etapa de orquestração envia as declarações para a 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 a esta etapa de orquestração. Normalmente, o identificador de referência de definição de conteúdo é definido no perfil técnico autodeclarado. Mas, 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 um dos seguintes: ClaimsProviderSelection ou CombinedSignInAndSignUp, o Azure AD B2C precisa exibir a seleção do provedor de identidade sem ter um perfil técnico.
CpimIssuerTechnicalProfileReferenceId Não O tipo de etapa de orquestração é SendClaims. Essa propriedade define o identificador de perfil técnico do provedor de declarações que emite o token para a terceira parte confiável. Se estiver ausente, nenhum token de terceira parte confiável será criado.

O elemento OrchestrationStep pode conter os seguintes elementos:

Elemento Ocorrências Description
Pré-condições 0:n Uma lista de pré-condições que devem ser satisfeitas para que a etapa de orquestração seja executada.
ClaimsProviderSeleções 0:n Uma lista de seleções de provedores de declarações para a etapa de orquestração.
ClaimsExchanges 0:n Uma lista de trocas de reivindicações para a etapa de orquestração.
Lista de Viagens 0:1 Uma lista de candidatos sub jornada para a etapa de orquestração.

Pré-condições

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

O Azure AD B2C avalia as pré-condições em ordem de lista. As pré-condições baseadas em ordem permitem definir a ordem na qual as pré-condições são aplicadas. A primeira condição prévia satisfeita sobrepõe-se a todas as condições prévias subsequentes. A etapa de orquestração é executada somente se todas as pré-condições não forem satisfeitas.

O elemento Preconditions contém o seguinte elemento:

Elemento Ocorrências Description
Condição prévia 1:n Uma pré-condição para avaliar.

Condição prévia

O elemento Precondition contém os seguintes atributos:

Atributo Obrigatório Descrição
Type Sim O tipo de verificação ou consulta a ser executada para essa pré-condição. O valor pode ser ClaimsExist, que especifica que as ações devem ser executadas se as declarações especificadas existirem no conjunto de declarações atual do usuário, ou ClaimEquals, que especifica que as ações devem 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 reivindicação corresponder à pré-condição. Se o valor for definido como false, será considerado satisfeito quando a reivindicação não corresponder à pré-condição.

Os elementos Precondition contêm os seguintes elementos:

Elemento Ocorrências Description
valor 1:2 O identificador de um tipo de declaração. A declaração já está definida na seção esquema de declarações no arquivo de política ou no arquivo de política pai. Quando a pré-condição é tipo de ClaimEquals, um segundo Value elemento contém o valor a ser verificado.
Ação 1:1 A ação que deve ser executada 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 única reivindicação. Existem dois tipos de pré-condições:

  • ClaimsExist - Especifica que as ações devem ser executadas se as declarações especificadas existirem no pacote de declarações atual do usuário.

  • ClaimEquals - Especifica que as ações devem 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 booleana, use Trueou False.

    Se a declaração for nula ou não inicializada, a pré-condição será ignorada, seja a ExecuteActionsIf , trueou false. Como prática recomendada, verifique se a reivindicação existe e se é igual a um valor.

Um cenário de exemplo seria desafiar o usuário para MFA se o usuário tiver MfaPreference definido como Phone. Para executar essa lógica condicional, verifique se a declaração existe e também verifique se o valor da declaração é igual a MfaPreferencePhone. 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. Na jornada do usuário, o usuário selecionou entrar usando a conta local. Se o 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 entrou com uma conta social. É feita uma tentativa para encontrar a conta de usuário no diretório. Se o usuário entrar 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, a jornada pula 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 fornecedor de sinistros

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 duas etapas de orquestração:

  1. Botões - Começa com o tipo de , ou CombinedSignInAndSignUp que contém uma lista de ClaimsProviderSelectionopções que um usuário pode escolher. A ordem das opções dentro do elemento controla ClaimsProviderSelections a ordem dos botões apresentados ao usuário.
  2. Ações - Seguido por tipo de ClaimsExchange. O ClaimsExchange contém uma 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 autoafirmação. 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 Description
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 Description
DisplayOption Não Controla o comportamento de um caso em que uma única 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 de provedor de identidade única. Para usar esse atributo, a versão de definição de 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 Description
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 com o Facebook, LinkedIn, Twitter, Google ou uma conta local. Se o usuário selecionar um dos provedores de identidade social, a segunda etapa de orquestração será executada com a troca de declarações selecionada especificada no TargetClaimsExchangeId atributo. A segunda etapa de orquestração redireciona o usuário para o provedor de identidade social para concluir o processo de login. Se o usuário optar por entrar com a conta local, o Azure AD B2C permanecerá na mesma etapa de orquestração (a mesma página de inscrição ou página 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 Description
ClaimsExchange 1:n Dependendo do perfil técnico que está sendo usado, redireciona o cliente de acordo com o ClaimsProviderSelection que foi selecionado 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 fazer referência à troca de declarações de uma etapa de seleção do provedor de declarações na política.
TechnicalProfileReferenceId Sim O identificador do perfil técnico a ser executado.

Lista de Viagens

O elemento JourneyList contém o seguinte elemento :

Elemento Ocorrências Description
Candidato 1:1 Uma referência a uma sub-viagem a ser chamada.

Candidato

O elemento Candidate contém os seguintes atributos:

Atributo Obrigatório Description
SubJourneyReferenceId Sim O identificador da subjornada a ser executada.