Compartilhar via


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

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

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.

Um perfil técnico de validação é um perfil técnico comum de qualquer protocolo, como a ID do Microsoft Entra ou uma API REST. O perfil técnico de validação retorna declarações de saída ou retorna código de status HTTP 4xx, com os dados a seguir. 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.

Observação

Somente perfis técnicos autodeclarados 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 seu percurso 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 Descrição
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 Descrição
Id de Referência Sim Um identificador de um perfil técnico já definido na política ou na política pai.
ContinuarEmErro Não Indicar se a validação de quaisquer perfis técnicos de validação subsequentes deve continuar se esse perfil técnico de validação gerar um erro. Valores possíveis: true ou false (padrão, o processamento de perfis de validação adicionais será interrompido e um erro será retornado).
ContinueOnSuccess Não Indicando se a validação de quaisquer perfis de validação subsequentes deve continuar se esse 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á.

Observação

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

O elemento ValidationTechnicalProfile contém o seguinte elemento:

Elemento Ocorrências Descrição
Pré-condições 0:1 Uma lista de pré-condições que devem ser atendidas 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. É ClaimsExist especificado para garantir que as ações sejam 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 Descrição
Valor 1:n Os dados usados pela verificação. Se o tipo dessa verificação for ClaimsExist, esse campo especificará um ClaimTypeReferenceId para consultar. Se o tipo de verificação for ClaimEquals, esse campo especificará um ClaimTypeReferenceId para consultar. Enquanto outro elemento de valor contém o valor a ser verificado.
Ação 1:1 A ação que deve ser executada se a verificação de pré-condição em 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 esses 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 do usuário do banco de dados interno do cliente e continuar se ocorrer um erro, como 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 existir ou se o valor do userType for Customer. O perfil técnico de validação tenta ler o perfil do usuário do banco de dados interno do parceiro 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>