Partilhar via


Definir um perfil técnico autodeclarado 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.

Todas as interações no Azure Ative Directory B2C (Azure AD B2C) em que se espera que o usuário forneça entrada são perfis técnicos autodeclarados. Por exemplo, uma página de inscrição, uma página de início de sessão ou uma página de redefinição de palavra-passe.

Protocolo

O atributo Name do elemento Protocol precisa ser definido como Proprietary. O atributo handler deve conter o nome totalmente qualificado do assembly do manipulador de protocolo usado pelo Azure AD B2C, para autoafirmação: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

O exemplo a seguir mostra um perfil técnico autodeclarado para inscrição por e-mail:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

Declarações de entrada

Em um perfil técnico autodeclarado, você pode usar os elementos InputClaims e InputClaimsTransformations para preencher previamente o valor das declarações que aparecem na página autodeclarada (exibir declarações). Por exemplo, na política de perfil de edição, a jornada do usuário primeiro lê o perfil de usuário do serviço de diretório do Azure AD B2C e, em seguida, o perfil técnico autodeclarado define as declarações de entrada com os dados de usuário armazenados no perfil de usuário. Essas declarações são coletadas do perfil do usuário e, em seguida, apresentadas ao usuário, que pode editar os dados existentes.

<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="givenName" />
    <InputClaim ClaimTypeReferenceId="surname" />
  </InputClaims>

Exibir declarações

O elemento DisplayClaims contém uma lista de declarações a serem apresentadas na tela para coletar dados do usuário. Para preencher previamente os valores das declarações de exibição, use as declarações de entrada que foram descritas anteriormente. O elemento também pode conter um valor padrão.

A ordem das declarações em DisplayClaims especifica a ordem na qual o Azure AD B2C processa as declarações na tela. Para forçar o usuário a fornecer um valor para uma declaração específica, defina o atributo Required do elemento DisplayClaim como true.

O elemento ClaimType na coleção DisplayClaims precisa definir o elemento UserInputType para qualquer tipo de entrada de usuário suportado pelo Azure AD B2C. Por exemplo, TextBox ou DropdownSingleSelect.

Adicionar uma referência a um DisplayControl

Na coleção de declarações de exibição, você pode incluir uma referência a um DisplayControl que você criou. Um controle de exibição é um elemento da interface do usuário que tem funcionalidade especial e interage com o serviço back-end do Azure AD B2C. Ele permite que o usuário execute ações na página que invocam um perfil técnico de validação no back-end. Por exemplo, verificar um endereço de e-mail, número de telefone ou número de fidelidade do cliente.

O exemplo TechnicalProfile a seguir ilustra o uso de declarações de exibição com controles de exibição.

  • A primeira declaração de exibição faz uma referência ao emailVerificationControl controle de exibição, que coleta e verifica o endereço de e-mail.
  • A segunda declaração de exibição faz uma referência ao controle de exibição, que gera e verifica o captchaChallengeControl código CAPTCHA.
  • A sexta declaração de exibição faz uma referência ao phoneVerificationControl controle de exibição, que coleta e verifica um número de telefone.
  • As outras declarações de exibição são ClaimTypes a serem coletadas do usuário.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Como mencionado, uma declaração de exibição com uma referência a um controle de exibição pode executar sua própria validação, por exemplo, verificando o endereço de e-mail. Além disso, a página autodeclarada suporta o uso de um perfil técnico de validação para validar a página inteira, incluindo qualquer entrada do usuário (tipos de declaração ou controles de exibição), antes de passar para a próxima etapa de orquestração.

Combine cuidadosamente o uso de declarações de exibição e declarações de saída

Se você especificar um ou mais elementos DisplayClaim em um perfil técnico autodeclarado, deverá usar um DisplayClaim para cada declaração que deseja exibir na tela e coletar do usuário. Nenhuma declaração de saída é exibida por um perfil técnico autodeclarado que contém pelo menos uma declaração de exibição.

Considere o exemplo a seguir no qual uma age declaração é definida como uma declaração de saída em uma política base. Antes de adicionar quaisquer declarações de exibição ao perfil técnico autodeclarado, a age declaração é exibida na tela para coleta de dados do usuário:

<TechnicalProfile Id="id">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="age" />
  </OutputClaims>
</TechnicalProfile>

Se uma política folha que herda essa base especificar posteriormente officeNumber como uma declaração de exibição :

<TechnicalProfile Id="id">
  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="officeNumber" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="officeNumber" />
  </OutputClaims>
</TechnicalProfile>

A age declaração na política base não é mais apresentada na tela para o usuário - é efetivamente "oculta". Para exibir a age declaração e coletar o valor de idade do usuário, você deve adicionar um age DisplayClaim.

Declarações de saída

O elemento OutputClaims contém uma lista de declarações a serem retornadas para a próxima etapa de orquestração. O atributo DefaultValue só terá efeito se a declaração nunca tiver sido definida. Se tiver sido definido em uma etapa de orquestração anterior, o valor padrão não terá efeito mesmo se o usuário deixar o valor vazio. Para forçar o uso de um valor padrão, defina o atributo AlwaysUseDefaultValue como true.

Por motivos de segurança, um valor de declaração de senha (UserInputType definido como Password) está disponível apenas para os perfis técnicos de validação do perfil técnico autodeclarado. Não é possível usar a declaração de senha nas próximas etapas de orquestração.

Nota

Em versões anteriores do Identity Experience Framework (IEF), as declarações de saída eram usadas para coletar dados do usuário. Para coletar dados do usuário, use uma coleção DisplayClaims .

O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são usados para modificar as declarações de saída ou gerar novas.

Quando você deve usar declarações de saída

Em um perfil técnico autodeclarado, a coleção de declarações de saída retorna as declarações para a próxima etapa de orquestração.

Use declarações de saída quando:

  • As declarações são saídas por transformação de declarações de saída.
  • Definir um valor padrão em uma declaração de saída sem coletar dados do usuário ou retornar os dados do perfil técnico de validação. O LocalAccountSignUpWithLogonEmail perfil técnico autoafirmado define a declaração executed-SelfAsserted-Input como true.
  • Um perfil técnico de validação retorna as declarações de saída - Seu perfil técnico pode chamar um perfil técnico de validação que retorna algumas declarações. Você pode querer borbulhar as declarações e devolvê-las para as próximas etapas de orquestração na jornada do usuário. Por exemplo, ao entrar com uma conta local, o perfil técnico autodeclarado chamado SelfAsserted-LocalAccountSignin-Email chama o perfil técnico de validação chamado login-NonInteractive. Esse perfil técnico valida as credenciais do usuário e também retorna o perfil do usuário. Como 'userPrincipalName', 'displayName', 'givenName' e 'surName'.
  • Um controle de exibição retorna as declarações de saída - Seu perfil técnico pode ter uma referência a um controle de exibição. O controle de exibição retorna algumas declarações, como o endereço de e-mail verificado. Você pode querer borbulhar as declarações e devolvê-las para as próximas etapas de orquestração na jornada do usuário.

O exemplo a seguir demonstra o uso de um perfil técnico autodeclarado que usa declarações de exibição e declarações de saída.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Nota

Quando você coleta o valor da reivindicação de senha no perfil técnico autodeclarado, esse valor só está disponível dentro do mesmo perfil técnico ou dentro de um perfil técnico de validação que são referenciados por esse mesmo perfil técnico autodeclarado. Quando a execução desse perfil técnico autodeclarado é concluída e passa para outro perfil técnico, o valor da senha é perdido. Consequentemente, a declaração de senha só pode ser armazenada na etapa de orquestração em que é coletada.

Página de inscrição ou entrada de declarações de saída

Em uma página combinada de inscrição e entrada, observe o seguinte ao usar um elemento DataUri de definição de conteúdo que especifica um ou unifiedssd tipo de unifiedssp página:

  • Somente as declarações de nome de usuário e senha são renderizadas.
  • As duas primeiras declarações de saída devem ser o nome de usuário e a senha (nesta ordem).
  • Quaisquer outras reclamações não são apresentadas; Para essas declarações, você precisará definir ou invocar um perfil técnico de validação de defaultValue formulário de reivindicações.

Reivindicações persistentes

O elemento PersistedClaims não é usado. O perfil técnico autodeclarado não persiste os dados para o Azure AD B2C. Em vez disso, é feita uma chamada para um perfil técnico de validação responsável pela persistência dos dados. Por exemplo, a política de inscrição usa o LocalAccountSignUpWithLogonEmail perfil técnico autodeclarado para coletar o novo perfil de usuário. O LocalAccountSignUpWithLogonEmail perfil técnico chama o perfil técnico de validação para criar a conta no Azure AD B2C.

Perfis técnicos de validação

Um perfil técnico de validação é usado para validar algumas ou todas as declarações de saída do perfil técnico de referência. As declarações de entrada do perfil técnico de validação devem aparecer nas declarações de saída do perfil técnico autodeclarado. O perfil técnico de validação valida a entrada do usuário e pode retornar um erro para o usuário.

O perfil técnico de validação pode ser qualquer perfil técnico na política, como o Microsoft Entra ID ou um perfil técnico da API REST. No exemplo anterior, o perfil técnico valida LocalAccountSignUpWithLogonEmail que o signinName não existe no diretório. Caso contrário, o perfil técnico de validação cria uma conta local e retorna o objectId, authenticationSource, newUser. O SelfAsserted-LocalAccountSignin-Email perfil técnico chama o perfil técnico de login-NonInteractive validação para validar as credenciais do usuário.

Você também pode chamar um perfil técnico da API REST com sua lógica de negócios, substituir declarações de entrada ou enriquecer dados do usuário integrando-se ainda mais ao aplicativo corporativo de linha de negócios. Para obter mais informações, consulte Perfil técnico de validação

Nota

Um perfil técnico de validação só é acionado quando há uma entrada do usuário. Não é possível criar um perfil técnico vazio autodeclarado para chamar um perfil técnico de validação apenas para aproveitar o atributo ContinueOnError de um elemento ValidationTechnicalProfile . Você só pode chamar um perfil técnico de validação a partir de um perfil técnico autodeclarado que solicita uma entrada do usuário ou de uma etapa de orquestração em uma jornada do usuário.

Metadados

Atributo Necessário Description
setting.operatingMode 1 Não Para uma página de entrada, essa propriedade controla o comportamento do campo username, como validação de entrada e mensagens de erro. Valores esperados: Username ou Email. Confira a demonstração ao vivo desses metadados.
AllowGenerationOfClaimsWithNullValues Não Permitir gerar uma declaração com valor nulo. Por exemplo, caso o usuário não marque uma caixa de seleção.
ContentDefinitionReferenceId Sim O identificador da definição de conteúdo associada a este perfil técnico.
EnforceEmailVerification Não Para inscrição ou edição de perfil, impõe a verificação de e-mail. Valores possíveis: true (padrão) ou false.
configuração.retryLimit Não Controla o número de vezes que um usuário pode tentar fornecer os dados que são verificados em relação a um perfil técnico de validação. Por exemplo, um usuário tenta se inscrever com uma conta que já existe e continua tentando até que o limite seja atingido. Confira a demonstração ao vivo desses metadados.
SignUpTarget 1 Não O identificador de troca de destino de inscrição. Quando o usuário clica no botão de inscrição, o Azure AD B2C executa o identificador de câmbio especificado.
setting.showCancelButton Não Exibe o botão cancelar. Valores possíveis: true (padrão) ou false. Confira a demonstração ao vivo desses metadados.
setting.showContinueButton Não Exibe o botão continuar. Valores possíveis: true (padrão) ou false. Confira a demonstração ao vivo desses metadados.
configuração.showSignupLink 2 Não Exibe o botão de inscrição. Valores possíveis: true (padrão) ou false. Confira a demonstração ao vivo desses metadados.
setting.forgotPasswordLinkLocation 2 Não Exibe o link de senha esquecida. Valores possíveis: AfterLabel (padrão) exibe o link diretamente após o rótulo ou após o campo de entrada de senha quando não há rótulo, AfterInput exibe o link após o campo de entrada de senha, AfterButtons exibe o link na parte inferior do formulário após os botões ou None remove o link de senha esquecida. Confira a demonstração ao vivo desses metadados.
configuração.enableRememberMe 2 Não Exibe a caixa de seleção Manter-me conectado . Valores possíveis: true , ou false (padrão). Demonstração ao vivo desses metadados.
setting.inputVerificationDelayTimeInMilliseconds 3 Não Melhora a experiência do usuário, aguardando que o usuário pare de digitar e, em seguida, valide o valor. Valor padrão 2000 milissegundos. Confira a demonstração ao vivo desses metadados.
IncludeClaimResolvingInClaimsHandling Não Para declarações de entrada e saída, especifica se a resolução de declarações está incluída no perfil técnico. Valores possíveis: true, ou false (padrão). Se você quiser usar um resolvedor de declarações no perfil técnico, defina isso como true.
setting.forgotPasswordLinkOverride 4 Não Uma troca de declarações de redefinição de senha a ser executada. Para obter mais informações, consulte Redefinição de senha de autoatendimento.
configuração.enableCaptchaChallenge Não Especifica se o código de desafio CAPTCHA deve ser exibido. Valores possíveis: true , ou false (padrão). Para que essa configuração funcione, o controle de exibição CAPTCHA deve ser referenciado nas declarações de exibição do perfil técnico autodeclarado. O recurso CAPTCHA está em pré-visualização pública.
configuração.showHeading Não Especifica se o elemento de título Detalhes do Usuário deve estar visível. Valores possíveis: true (padrão) ou false.

Notas:

  1. Disponível para definição de conteúdo DataUri tipo de unifiedssp, ou unifiedssd.
  2. Disponível para definição de conteúdo DataUri tipo de unifiedssp, ou unifiedssd. Layout de página versão 1.1.0 e superior.
  3. Disponível para layout de página versão 1.2.0 e superior.
  4. Disponível para definição de conteúdo DataUri tipo de unifiedssp. Layout de página versão 2.1.2 e superior.

Chaves criptográficas

O elemento CryptographicKeys não é usado.