Definir um perfil técnico de validação em uma política personalizada do Azure Ative Directory B2C

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.

Um perfil técnico de validação é um perfil técnico comum de qualquer protocolo, como o Microsoft Entra ID ou uma API REST. O perfil técnico de validação retorna declarações de saída ou retorna o código de status HTTP 4xx com os seguintes dados. Para obter mais informações, consulte retornando mensagem de erro

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

O escopo das declarações de saída de um perfil técnico de validação é limitado ao perfil técnico autodeclarado que invoca o perfil técnico de validação e seus perfis técnicos de validação. Se você quiser usar as declarações de saída na próxima etapa de orquestração, adicione as declarações de saída ao perfil técnico autodeclarado que invoca o perfil técnico de validação.

Os perfis técnicos de validação são executados na sequência em que aparecem no elemento ValidationTechnicalProfiles . Você pode configurar em um perfil técnico de validação se a execução de quaisquer perfis técnicos de validação subsequentes deve continuar se o perfil técnico de validação gerar um erro ou for bem-sucedido.

Um perfil técnico de validação pode ser executado condicionalmente com base em pré-condições definidas no elemento ValidationTechnicalProfile . Por exemplo, você pode verificar se existe uma declaração específica ou se uma declaração é igual ou não ao valor especificado.

Um perfil técnico autodeclarado pode definir um perfil técnico de validação a ser usado para validar algumas ou todas as suas declarações de saída. Todas as declarações de entrada do perfil técnico referenciado devem aparecer nas declarações de saída do perfil técnico de validação de referência.

Nota

Apenas perfis técnicos autoafirmados podem usar perfis técnicos de validação. Se você precisar validar as declarações de saída de perfis técnicos não autodeclarados, considere usar uma etapa de orquestração adicional em sua jornada do usuário para acomodar o perfil técnico responsável pela validação.

ValidaçãoPerfis Técnicos

O elemento ValidationTechnicalProfiles contém os seguintes elementos:

Elemento Ocorrências Description
ValidaçãoPerfil Técnico 1:n Um perfil técnico a ser usado para validar algumas ou todas as declarações de saída do perfil técnico de referência.

O elemento ValidationTechnicalProfile contém o seguinte atributo:

Atributo Obrigatório Description
ReferenceId Sim Um identificador de um perfil técnico já definido na política ou na política pai.
ContinueOnError Não Indicar se a validação de quaisquer perfis técnicos de validação subsequentes deve continuar se este perfil técnico de validação suscitar um erro. Valores possíveis: true ou false (padrão, o processamento de perfis de validação adicionais será interrompido e um erro retornado).
ContinuarOnSuccess Não Indicar se a validação de quaisquer perfis de validação subsequentes deve continuar se este perfil técnico de validação for bem-sucedido. Valores possíveis: true ou false. O padrão é true, o que significa que o processamento de outros perfis de validação continuará.

Nota

Atualmente, se você definir ContinueOnError como false para um perfil técnico de validação do tipo ClaimsTransformation, o perfil técnico não honrará a configuração. Para superar esse problema, use Pré-condições.

O elemento ValidationTechnicalProfile contém o seguinte elemento :

Elemento Ocorrências Description
Pré-condições 0:1 Uma lista de pré-condições que devem ser satisfeitas para que o perfil técnico de validação seja executado.

O elemento Precondition contém o seguinte atributo:

Atributo Obrigatório Descrição
Type Sim O tipo de verificação ou consulta a ser executada para a pré-condição. Ou ClaimsExist é especificado para garantir que as ações devem ser executadas se as declarações especificadas existirem no conjunto de declarações atual do usuário, ou ClaimEquals é especificado que as ações devem ser executadas se a declaração especificada existir e seu valor for igual ao valor especificado.
ExecuteActionsIf Sim Indica se as ações na pré-condição devem ser executadas se o teste for verdadeiro ou falso.

O elemento Precondition contém os seguintes elementos:

Elemento Ocorrências Description
valor 1:n Os dados que são usados pela verificação. Se o tipo dessa verificação for ClaimsExist, este campo especifica um ClaimTypeReferenceId para consultar. Se o tipo de verificação for ClaimEquals, este campo especifica um ClaimTypeReferenceId para consultar. Enquanto outro elemento value contém o valor a ser verificado.
Ação 1:1 A ação que deve ser tomada se a verificação de pré-condição dentro de uma etapa de orquestração for verdadeira. O valor da Ação é definido como SkipThisValidationTechnicalProfile. Especifica que o perfil técnico de validação associado não deve ser executado.

Exemplo

O exemplo a seguir usa estes perfis técnicos de validação:

  1. O primeiro perfil técnico de validação verifica as credenciais do usuário e não continua se ocorrer um erro, como nome de usuário inválido ou senha incorreta.
  2. O próximo perfil técnico de validação não será executado se a declaração userType não existir ou se o valor do userType for Partner. O perfil técnico de validação tenta ler o perfil de usuário do banco de dados interno do cliente e continuar se ocorrer um erro, como o serviço de API REST não disponível ou qualquer erro interno.
  3. O último perfil técnico de validação não será executado se a declaração userType não tiver existido ou se o valor do userType for Customer. O perfil técnico de validação tenta ler o perfil de usuário do banco de dados de parceiro interno e continua se ocorrer um erro, como serviço de API REST não disponível ou qualquer erro 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>