Partilhar via


Perfis técnicos

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 fornece uma estrutura com um mecanismo integrado para se comunicar com diferentes tipos de partes. Os perfis técnicos são usados para se comunicar com seu locatário do Azure Ative Directory B2C (Azure AD B2C) para criar um usuário ou ler um perfil de usuário. Um perfil técnico pode ser autoafirmado para permitir a interação com o usuário. Por exemplo, um perfil técnico pode coletar a credencial do usuário para entrar e, em seguida, renderizar a página de inscrição ou a página de redefinição de senha.

Tipos de perfis técnicos

Um perfil técnico permite estes tipos de cenários:

  • Application Insights: envia dados de eventos para o Application Insights.
  • Microsoft Entra ID: fornece suporte para o gerenciamento de usuários do Azure AD B2C.
  • Autenticação multifator do Microsoft Entra: fornece suporte para verificar um número de telefone usando a autenticação multifator do Microsoft Entra.
  • Transformação de declarações: chama transformações de declarações de saída para manipular valores de declarações, validar declarações ou definir valores padrão para um conjunto de declarações de saída.
  • Dica de token de ID: valida a assinatura do id_token_hint token JWT, o nome do emissor e o público do token e extrai a declaração do token de entrada.
  • Emissor de token JWT: emite um token JWT que é retornado ao aplicativo de terceira parte confiável.
  • OAuth1: Federação com qualquer provedor de identidade de protocolo OAuth 1.0.
  • OAuth2: Federação com qualquer provedor de identidade de protocolo OAuth 2.0.
  • One-time password: Fornece suporte para gerenciar a geração e verificação de uma senha única.
  • OpenID Connect: Federação com qualquer provedor de identidade do protocolo OpenID Connect.
  • Fator de telefone: suporta inscrição e verificação de números de telefone.
  • Provedor RESTful: chama serviços de API REST, como validar a entrada do usuário, enriquecer os dados do usuário ou integrar-se a aplicativos de linha de negócios.
  • Provedor de identidade SAML: Federação com qualquer provedor de identidade de protocolo SAML.
  • Emissor de token SAML: emite um token SAML que é retornado ao aplicativo de terceira parte confiável.
  • Autoafirmado: Interage com o usuário. Por exemplo, coleta a credencial do usuário para entrar, renderizar a página de inscrição ou redefinir a senha.
  • Gestão de sessões: Lida com diferentes tipos de sessões.

Fluxo de perfil técnico

Todos os tipos de perfis técnicos partilham o mesmo conceito. Eles começam lendo as declarações de entrada e executam transformações de declarações. Em seguida, eles se comunicam com a parte configurada, como um provedor de identidade, API REST ou serviços de diretório do Microsoft Entra. Após a conclusão do processo, o perfil técnico retorna as declarações de saída e pode executar transformações de declarações de saída. O diagrama a seguir mostra como as transformações e mapeamentos referenciados no perfil técnico são processados. Depois que a transformação de declarações é executada, as declarações de saída são imediatamente armazenadas no pacote de declarações, independentemente da parte com a qual o perfil técnico interage.

Diagrama que ilustra o fluxo do perfil técnico.

  1. Gerenciamento de sessão de logon único (SSO): restaura o estado da sessão do perfil técnico usando o gerenciamento de sessão SSO.
  2. Transformação de declarações de entrada: antes de o perfil técnico ser iniciado, o Azure AD B2C executa a transformação de declarações de entrada.
  3. Declarações de entrada: As reclamações são retiradas do saco de sinistros que são usados para o perfil técnico.
  4. Execução do perfil técnico: O perfil técnico troca as declarações com a parte configurada. Por exemplo:
    • Redireciona o usuário para o provedor de identidade para concluir o login. Após o login bem-sucedido, o usuário retorna e a execução do perfil técnico continua.
    • Chama uma API REST ao enviar parâmetros como InputClaims e obter informações de volta como OutputClaims.
    • Cria ou atualiza a conta de usuário.
    • Envia e verifica a mensagem de texto de autenticação multifator.
  5. Perfis técnicos de validação: um perfil técnico autodeclarado pode chamar perfis técnicos de validação para validar os dados perfilados pelo usuário. Apenas perfis técnicos autoafirmados podem usar perfis técnicos de validação.
  6. Declarações de saída: As declarações são devolvidas ao saco de reclamações. Você pode usar essas declarações na próxima etapa de orquestrações ou transformações de declarações de saída.
  7. Transformações de declarações de saída: após a conclusão do perfil técnico, o Azure AD B2C executa transformações de declarações de saída.
  8. Gerenciamento de sessão SSO: Persiste os dados do perfil técnico na sessão usando o gerenciamento de sessão SSO.

Um elemento TechnicalProfiles contém um conjunto de perfis técnicos suportados pelo provedor de declarações. Todo provedor de sinistros deve ter pelo menos um perfil técnico. O perfil técnico determina os pontos de extremidade e os protocolos necessários para se comunicar com o provedor de declarações. Um provedor de sinistros pode ter vários perfis técnicos.

<ClaimsProvider>
  <DisplayName>Display name</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Technical profile identifier">
      <DisplayName>Display name of technical profile</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        ...
      </Metadata>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

O elemento TechnicalProfile contém o seguinte atributo:

Atributo Necessário Descrição
ID Sim Um identificador único do perfil técnico. O perfil técnico pode ser referenciado usando esse identificador de outros elementos no arquivo de política. Exemplos são OrchestrationSteps e ValidationTechnicalProfile.

O elemento TechnicalProfile contém os seguintes elementos:

Elemento Ocorrências Description
Domínio 0:1 O nome de domínio para o perfil técnico. Por exemplo, se o seu perfil técnico especificar o provedor de identidade do Facebook, o nome de domínio será Facebook.com.
DisplayName 1:1 O nome para exibição do perfil técnico.
Description 0:1 A descrição do perfil técnico.
Protocolo 1:1 O protocolo utilizado para a comunicação com a outra parte.
Metadados 0:1 Um conjunto de chaves e valores que controla o comportamento do perfil técnico.
InputTokenFormat 0:1 O formato do token de entrada. Os valores possíveis são JSON, JWT, SAML11, ou SAML2. O JWT valor representa um JSON Web Token de acordo com a especificação IETF. O SAML11 valor representa um token de segurança SAML 1.1 de acordo com a especificação OASIS. O SAML2 valor representa um token de segurança SAML 2.0 de acordo com a especificação OASIS.
OutputTokenFormat 0:1 O formato do token de saída. Os valores possíveis são JSON, JWT, SAML11, ou SAML2.
Chaves Criptográficas 0:1 Uma lista de chaves criptográficas que são usadas no perfil técnico.
InputClaimsTransformations 0:1 Uma lista de referências previamente definidas a transformações de declarações que devem ser executadas antes que quaisquer declarações sejam enviadas ao provedor de declarações ou à terceira parte confiável.
InputClaims 0:1 Uma lista de referências previamente definidas a tipos de declaração que são tomadas como entrada no perfil técnico.
Reivindicações persistentes 0:1 Uma lista de referências previamente definidas para tipos de declaração que serão persistidos pelo perfil técnico.
DisplayClaims 0:1 Uma lista de referências previamente definidas para tipos de sinistro que são apresentadas pelo perfil técnico autodeclarado. O recurso DisplayClaims está atualmente em visualização.
OutputClaims 0:1 Uma lista de referências previamente definidas para tipos de declaração que são tomados como saída no perfil técnico.
OutputClaimsTransformações 0:1 Uma lista de referências previamente definidas a transformações de declarações que devem ser executadas depois que as declarações são recebidas do provedor de declarações.
ValidaçãoPerfis Técnicos 0:n Uma lista de referências a outros perfis técnicos que o perfil técnico utiliza para fins de validação. Para obter mais informações, consulte Perfil técnico de validação.
AssuntoNamingInfo 0:1 Controla a produção do nome do assunto em tokens onde o nome do assunto é especificado separadamente das declarações. Exemplos são OAuth ou SAML.
IncludeInSso 0:1 Se o uso desse perfil técnico deve aplicar o comportamento SSO para a sessão ou, em vez disso, exigir interação explícita. Este elemento é válido apenas em perfis SelfAsserted usados dentro de um perfil técnico de validação. Os valores possíveis são true (padrão) ou false.
IncludeClaimsFromTechnicalProfile 0:1 Um identificador de um perfil técnico a partir do qual você deseja que todas as declarações de entrada e saída sejam adicionadas a esse perfil técnico. O perfil técnico referenciado deve ser definido no mesmo ficheiro de política.
IncludeTechnicalProfile 0:1 Um identificador de um perfil técnico a partir do qual pretende que todos os dados sejam adicionados a este perfil técnico.
UseTechnicalProfileForSessionManagement 0:1 Um perfil técnico diferente a ser usado para gerenciamento de sessão.
EnabledForUserJourneys 0:1 Controla se o perfil técnico é executado em uma jornada do usuário.

Protocolo

O elemento Protocol especifica o protocolo a ser usado para a comunicação com a outra parte. O elemento Protocol contém os seguintes atributos:

Atributo Necessário Description
Name Sim O nome de um protocolo válido suportado pelo Azure AD B2C que é usado como parte do perfil técnico. Os valores possíveis são OAuth1, OAuth2, SAML2, OpenIdConnect, Proprietary, ou None.
Processador Não Quando o nome do protocolo é definido como Proprietary, especifica o nome do assembly usado pelo Azure AD B2C para determinar o manipulador de protocolo. Se você definir o atributo Nome do protocolo como None, não inclua o atributo Handler.

Metadados

O elemento Metadata contém as opções de configuração relevantes para um protocolo específico. A lista de metadados suportados está documentada na especificação de perfil técnico correspondente. Um elemento Metadata contém o seguinte elemento :

Elemento Ocorrências Description
Item 0:n Os metadados que se relacionam com o perfil técnico. Cada tipo de perfil técnico tem um conjunto diferente de itens de metadados. Para obter mais informações, consulte a seção Tipos de perfil técnico.

Item

O elemento Item do elemento Metadata contém o seguinte atributo:

Atributo Necessário Description
Key Sim A chave de metadados. Consulte cada tipo de perfil técnico para obter a lista de itens de metadados.

O exemplo a seguir ilustra o uso de metadados relevantes para o perfil técnico OAuth2.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <Metadata>
    <Item Key="ProviderName">facebook</Item>
    <Item Key="authorization_endpoint">https://www.facebook.com/dialog/oauth</Item>
    <Item Key="AccessTokenEndpoint">https://graph.facebook.com/oauth/access_token</Item>
    <Item Key="HttpBinding">GET</Item>
    <Item Key="UsePolicyInRedirectUri">0</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

O exemplo a seguir ilustra o uso de metadados relevantes para o perfil técnico da API REST.

<TechnicalProfile Id="REST-Validate-Email">
  ...
  <Metadata>
    <Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
    <Item Key="AuthenticationType">Bearer</Item>
    <Item Key="SendClaimsIn">Body</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Chaves criptográficas

Para estabelecer confiança com os serviços com os quais se integra, o Azure AD B2C armazena segredos e certificados na forma de chaves de política. Durante a execução do perfil técnico, o Azure AD B2C recupera as chaves criptográficas das chaves de política do Azure AD B2C. Em seguida, o Azure AD B2C usa as chaves para estabelecer confiança ou criptografar ou assinar um token. Estes fundos fiduciários consistem em:

O elemento CryptographicKeys contém o seguinte elemento :

Elemento Ocorrências Description
Key 1:n Uma chave criptográfica usada neste perfil técnico.

Chave

O elemento Key contém o seguinte atributo:

Atributo Necessário Descrição
ID Não Um identificador exclusivo de um par de chaves específico referenciado a partir de outros elementos no arquivo de política.
StorageReferenceId Sim Um identificador de um contêiner de chave de armazenamento referenciado de outros elementos no arquivo de política.

Transformações de declarações de entrada

O elemento InputClaimsTransformations pode conter uma coleção de elementos de transformação de declarações de entrada que são usados para modificar declarações de entrada ou gerar novas.

As declarações de saída de uma transformação de declarações anterior na coleção de declarações de transformação podem ser declarações de entrada de uma transformação de declarações de entrada subsequente. Dessa forma, você pode ter uma sequência de transformações de declarações que dependem umas das outras.

O elemento InputClaimsTransformations contém o seguinte elemento :

Elemento Ocorrências Description
InputClaimsTransformation 1:n O identificador de uma transformação de declarações que deve ser executada antes que quaisquer declarações sejam enviadas ao provedor de declarações ou à terceira parte confiável. Uma transformação de declarações pode ser usada para modificar declarações ClaimsSchema existentes ou gerar novas.

InputClaimsTransformation

O elemento InputClaimsTransformation contém o seguinte atributo:

Atributo Necessário Description
ReferenceId Sim Um identificador de uma transformação de declarações já definida no arquivo de política ou no arquivo de política pai.

Os perfis técnicos a seguir fazem referência à transformação de declarações CreateOtherMailsFromEmail . A transformação de declarações adiciona o valor da declaração à otherMails coleção antes de email persistir os dados no diretório.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  ...
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  ...
</TechnicalProfile>

Declarações de entrada

O elemento InputClaims pega as declarações do pacote de declarações que são usadas para o perfil técnico. Por exemplo, um perfil técnico autodeclarado usa as declarações de entrada para preencher previamente as declarações de saída fornecidas pelo usuário. Um perfil técnico da API REST usa as declarações de entrada para enviar parâmetros de entrada para o ponto de extremidade da API REST. O Azure AD B2C usa uma declaração de entrada como um identificador exclusivo para ler, atualizar ou excluir uma conta.

O elemento InputClaims contém o seguinte elemento :

Elemento Ocorrências Description
InputClaim 1:n Um tipo de declaração de entrada esperado.

InputClaim

O elemento InputClaim contém os seguintes atributos:

Atributo Necessário Description
ClaimTypeReferenceId Sim 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.
DefaultValue Não Um valor padrão a ser usado para criar uma declaração se a declaração indicada por ClaimTypeReferenceId não existir para que a declaração resultante possa ser usada como um elemento InputClaim pelo perfil técnico.
AlwaysUseDefaultValue Sim Força o uso do valor padrão.
PartnerClaimType Não O identificador do tipo de declaração do parceiro externo para o qual o tipo de declaração de política especificado é mapeado. Se o atributo PartnerClaimType não for especificado, o tipo de declaração de política especificado será mapeado para o tipo de declaração de parceiro com o mesmo nome. Use essa propriedade quando o nome do tipo de declaração for diferente da outra parte. Um exemplo é se o primeiro nome da declaração for givenName, enquanto o parceiro usa uma reivindicação chamada first_name.

Exibir declarações

O elemento DisplayClaims contém uma lista de declarações a serem apresentadas na tela para coletar dados do usuário. Na coleção de declarações de exibição, você pode incluir uma referência a um tipo de declaração ou a um controle de exibição que você criou.

  • Um tipo de declaração é uma referência a uma declaração a ser exibida 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.
    • 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.
    • 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. Exemplos são TextBox ou DropdownSingleSelect.
  • 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. Um exemplo é verificar um endereço de e-mail, número de telefone ou número de fidelidade do cliente.

A ordem dos elementos em DisplayClaims especifica a ordem na qual o Azure AD B2C processa as declarações na tela.

O elemento DisplayClaims contém o seguinte elemento :

Elemento Ocorrências Description
DisplayClaim 1:n Um tipo de declaração de entrada esperado.

DisplayClaim

O elemento DisplayClaim contém os seguintes atributos:

Atributo Necessário Description
ClaimTypeReferenceId Não O identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política ou arquivo de política pai.
DisplayControlReferenceId Não O identificador de um controle de exibição já definido na seção ClaimsSchema no arquivo de política ou arquivo de política pai.
Obrigatório Não Indica se a declaração de exibição é necessária.

O exemplo a seguir ilustra o uso de declarações de exibição e controles de exibição em um perfil técnico autodeclarado.

Captura de tela que mostra um perfil técnico autodeclarado com declarações de exibição.

No seguinte perfil técnico:

  • 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 quinta 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 elementos ClaimType a serem coletados do usuário.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <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>

Reclamações persistentes

O elemento PersistedClaims contém todos os valores que devem ser persistidos por um perfil técnico do Microsoft Entra ID com possíveis informações de mapeamento entre um tipo de declaração já definido na seção ClaimsSchema da política e o nome do atributo Microsoft Entra.

O nome da declaração é o nome do atributo Microsoft Entra, a menos que o atributo PartnerClaimType seja especificado, que contém o nome do atributo Microsoft Entra.

O elemento PersistedClaims contém o seguinte elemento :

Elemento Ocorrências Description
PersistedClaim 1:n O tipo de declaração a ser persistido.

PersistedClaim

O elemento PersistedClaim contém os seguintes atributos:

Atributo Necessário Description
ClaimTypeReferenceId Sim O identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política ou arquivo de política pai.
DefaultValue Não Um valor padrão a ser usado para criar uma declaração se a declaração não existir.
PartnerClaimType Não O identificador do tipo de declaração do parceiro externo para o qual o tipo de declaração de política especificado é mapeado. Se o atributo PartnerClaimType não for especificado, o tipo de declaração de política especificado será mapeado para o tipo de declaração de parceiro com o mesmo nome. Use essa propriedade quando o nome do tipo de declaração for diferente da outra parte. Um exemplo é se o primeiro nome da declaração for givenName, enquanto o parceiro usa uma reivindicação chamada first_name.

No exemplo a seguir, o perfil técnico AAD-UserWriteUsingLogonEmail ou o pacote inicial, que cria uma nova conta local, persiste as seguintes declarações:

<PersistedClaims>
  <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
  <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
  <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
  <PersistedClaim ClaimTypeReferenceId="givenName" />
  <PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>

Declarações de saída

O elemento OutputClaims é uma coleção de declarações que são retornadas ao pacote de declarações após a conclusão do perfil técnico. Você pode usar essas declarações na próxima etapa de orquestrações ou transformações de declarações de saída. O elemento OutputClaims contém o seguinte elemento :

Elemento Ocorrências Description
OutputClaim 1:n Um tipo de declaração de saída esperado.

OutputClaim

O elemento OutputClaim contém os seguintes atributos:

Atributo Necessário Description
ClaimTypeReferenceId Sim O identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política ou arquivo de política pai.
DefaultValue Não Um valor padrão a ser usado para criar uma declaração se a declaração não existir.
AlwaysUseDefaultValue Não Força o uso do valor padrão.
PartnerClaimType Não O identificador do tipo de declaração do parceiro externo para o qual o tipo de declaração de política especificado é mapeado. Se o atributo partner claim type não for especificado, o tipo de declaração de política especificado será mapeado para o tipo de declaração de parceiro com o mesmo nome. Use essa propriedade quando o nome do tipo de declaração for diferente da outra parte. Um exemplo é se o primeiro nome da declaração for givenName, enquanto o parceiro usa uma reivindicação chamada first_name.

Transformações de declarações de saída

O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation . As transformações de declarações de saída são usadas para modificar as declarações de saída ou gerar novas. Após a execução, as declarações de saída são colocadas de volta no saco de reivindicações. Você pode usar essas declarações na próxima etapa de orquestrações.

As declarações de saída de uma transformação de declarações anterior na coleção de declarações de transformação podem ser declarações de entrada de uma transformação de declarações de entrada subsequente. Dessa forma, você pode ter uma sequência de transformações de declarações que dependem umas das outras.

O elemento OutputClaimsTransformations contém o seguinte elemento :

Elemento Ocorrências Description
OutputClaimsTransformation 1:n Os identificadores das transformações de declarações que devem ser executadas antes que quaisquer declarações sejam enviadas ao provedor de declarações ou à terceira parte confiável. Uma transformação de declarações pode ser usada para modificar declarações ClaimsSchema existentes ou gerar novas.

OutputClaimsTransformation

O elemento OutputClaimsTransformation contém o seguinte atributo:

Atributo Necessário Description
ReferenceId Sim Um identificador de uma transformação de declarações já definida no arquivo de política ou no arquivo de política pai.

O perfil técnico a seguir faz referência à transformação de declarações AssertAccountEnabledIsTrue para avaliar se a conta está habilitada ou não depois de ler a accountEnabled declaração do diretório.

<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
  ...
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="accountEnabled" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  ...
</TechnicalProfile>

Perfis técnicos de validação

Um perfil técnico de validação é usado para validar declarações de saída em um perfil técnico autodeclarado. 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 código de erro. A mensagem de erro é processada para o usuário na tela, o que permite que o usuário tente novamente.

O diagrama a seguir ilustra como o Azure AD B2C usa um perfil técnico de validação para validar as credenciais do usuário.

Diagrama que mostra um fluxo de perfil técnico de validação.

O elemento ValidationTechnicalProfiles contém o seguinte elemento :

Elemento Ocorrências Description
ValidaçãoPerfil Técnico 1:n Os identificadores de perfis técnicos que são usados validam algumas ou todas as declarações de saída do perfil técnico de referência. Todas as declarações de entrada do perfil técnico referenciado devem aparecer nas declarações de saída do perfil técnico de referência.

ValidaçãoPerfil Técnico

O elemento ValidationTechnicalProfile contém o seguinte atributo:

Atributo Necessário Description
ReferenceId Sim Um identificador de um perfil técnico já definido no arquivo de política ou no arquivo de política pai.

AssuntoNamingInfo

O elemento SubjectNamingInfo define o nome do assunto usado em tokens em uma política de terceira parte confiável. O elemento SubjectNamingInfo contém o seguinte atributo:

Atributo Necessário Description
Tipo de reivindicação Sim Um identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política.

Incluir perfil técnico

Um perfil técnico pode incluir outro perfil técnico para alterar configurações ou adicionar novas funcionalidades. O elemento IncludeTechnicalProfile é uma referência ao perfil técnico comum do qual um perfil técnico é derivado. Para reduzir a redundância e a complexidade dos elementos da política, use a inclusão quando tiver vários perfis técnicos que compartilhem os elementos principais. Use um perfil técnico comum com o conjunto comum de configuração, juntamente com perfis técnicos de tarefa específicos que incluam o perfil técnico comum.

Suponha que você tenha um perfil técnico da API REST com um único ponto de extremidade para o qual você precisa enviar diferentes conjuntos de declarações para diferentes cenários. Crie um perfil técnico comum com a funcionalidade compartilhada, como o URI de ponto de extremidade da API REST, metadados, tipo de autenticação e chaves criptográficas. Crie perfis técnicos de tarefas específicas que incluam o perfil técnico comum. Em seguida, adicione as declarações de entrada e saída ou substitua o URI do ponto de extremidade da API REST relevante para esse perfil técnico.

O elemento IncludeTechnicalProfile contém o seguinte atributo:

Atributo Necessário Description
ReferenceId Sim Um identificador de um perfil técnico já definido no arquivo de política ou no arquivo de política pai.

O exemplo a seguir ilustra o uso da inclusão:

  • REST-API-Common: Um perfil técnico comum com a configuração básica.
  • REST-ValidateProfile: Inclui o perfil técnico REST-API-Common e especifica as declarações de entrada e saída.
  • REST-UpdateProfile: Inclui o perfil técnico REST-API-Common , especifica as declarações de entrada e substitui os ServiceUrl metadados.
<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-API-Common">
      <DisplayName>Base REST API configuration</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="SendClaimsIn">Body</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_B2cRestClientId" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_B2cRestClientSecret" />
      </CryptographicKeys>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Validate the account and return promo code</DisplayName>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-UpdateProfile">
      <DisplayName>Update the user profile</DisplayName>  
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/update</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Inclusão multinível

Um perfil técnico pode incluir um único perfil técnico. Não há limite para o número de níveis de inclusão. Por exemplo, o perfil técnico AAD-UserReadUsingAlternativeSecurityId-NoError inclui AAD-UserReadUsingAlternativeSecurityId. Este perfil técnico define o RaiseErrorIfClaimsPrincipalDoesNotExist item de metadados como true e gera um erro se uma conta social não existir no diretório. AAD-UserReadUsingAlternativeSecurityId-NoError substitui esse comportamento e desabilita essa mensagem de erro.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId-NoError">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeTechnicalProfile ReferenceId="AAD-UserReadUsingAlternativeSecurityId" />
</TechnicalProfile>

AAD-UserReadUsingAlternativeSecurityId inclui o AAD-Common perfil técnico.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">User does not exist. Please sign up before you can sign in.</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

AAD-UserReadUsingAlternativeSecurityId-NoError e AAD-UserReadUsingAlternativeSecurityId não especificam o elemento Protocol necessário porque ele é especificado no perfil técnico AAD-Common.

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
</TechnicalProfile>

Usar perfil técnico para gerenciamento de sessão

O elemento UseTechnicalProfileForSessionManagement faz referência ao perfil técnico da sessão SSO. O elemento UseTechnicalProfileForSessionManagement contém o seguinte atributo:

Atributo Necessário Description
ReferenceId Sim Um identificador de um perfil técnico já definido no arquivo de política ou no arquivo de política pai.

Habilitado para jornadas do usuário

O ClaimsProviderSelections em uma jornada do usuário define a lista de opções de seleção do provedor de declarações e sua ordem. Com o elemento EnabledForUserJourneys, você filtra qual provedor de declarações está disponível para o usuário. O elemento EnabledForUserJourneys contém um dos seguintes valores:

  • Sempre: Executa o perfil técnico.
  • Nunca: Ignora o perfil técnico.
  • OnClaimsExistence: Executa somente quando existe uma determinada declaração especificada no perfil técnico.
  • OnItemExistenceInStringCollectionClaim: Executa somente quando um item existe em uma declaração de coleção de cadeia de caracteres.
  • OnItemAbsenceInStringCollectionClaim: é executado somente quando um item não existe em uma declaração de coleção de cadeia de caracteres.

Usar OnClaimsExistence, OnItemExistenceInStringCollectionClaim ou OnItemAbsenceInStringCollectionClaim requer que você forneça os seguintes metadados:

  • ClaimTypeOnWhichToEnable: Especifica o tipo de declaração a ser avaliado.
  • ClaimValueOnWhichToEnable: especifica o valor a ser comparado.

O seguinte perfil técnico é executado somente se a coleção de cadeia de caracteres identityProviders contiver o valor de facebook.com:

<TechnicalProfile Id="UnLink-Facebook-OAUTH">
  <DisplayName>Unlink Facebook</DisplayName>
...
    <Metadata>
      <Item Key="ClaimTypeOnWhichToEnable">identityProviders</Item>
      <Item Key="ClaimValueOnWhichToEnable">facebook.com</Item>
    </Metadata>
...
  <EnabledForUserJourneys>OnItemExistenceInStringCollectionClaim</EnabledForUserJourneys>
</TechnicalProfile>