Perfis técnicos

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 fornece uma estrutura com um mecanismo interno para se comunicar com diferentes tipos de partes. Os perfis técnicos são usados para se comunicar com o locatário do Azure AD B2C (Azure Active Directory B2C), para criar um usuário ou ler um perfil de usuário. Um perfil técnico pode ser autodeclarado 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 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 esses tipos de cenários:

  • Application insights: envia dados de evento para o Application insights.
  • Microsoft Entra ID: oferece suporte para o gerenciamento de usuário do Azure AD B2C.
  • Autenticação multifator do Microsoft Entra: oferece 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 id_token_hint assinatura do token JWT, o nome do emissor e o público-alvo do token, e extrai a declaração do token de entrada.
  • Emissor de token JWT: emite um token JWT que é retornado para o 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.
  • Senha de uso único: fornece suporte para gerenciar a geração e a verificação de uma senha de uso único.
  • OpenID Connect: federação com qualquer provedor de identidade de protocolo OpenID Connect.
  • Fator de telefone: dá suporte ao registro e à verificação de números de telefone.
  • Provedor RESTful: chama os serviços da API REST, como validação da entrada do usuário, enriquecimento de dados do usuário ou integração aos aplicativos de linha de negócios.
  • Provedor de identidade SAML2: federação com qualquer provedor de identidade de protocolo SAML.
  • Emissor de token SAML: emite um token SAML que é retornado para o aplicativo de terceira parte confiável.
  • Autodeclarado: interage com o usuário. Por exemplo, colete a credencial do usuário para entrar e renderizar a página de inscrição ou redefinir a senha.
  • Gerenciamento de sessão: lida com diferentes tipos de sessões.

Fluxo do perfil técnico

Todos os tipos de perfis técnicos compartilham o mesmo conceito. Eles começam lendo as declarações de entrada e executam transformações de declarações. Então, eles se comunicam com a parte configurada, como um provedor de identidade, uma 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 as 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. Após a execução de qualquer declaração de transformação, as declarações de saída são imediatamente armazenadas no recipiente de declarações, independentemente da entidade com a qual o perfil técnico interage.

Diagram that illustrates the technical profile flow.

  1. Gerenciamento da sessão de SSO (logon único) : restaura o estado de sessão do perfil técnico usando o gerenciamento da sessão de SSO.
  2. Transformação de declarações de entrada: antes do perfil técnico ser iniciado, o Azure AD B2C executa a transformação de declaraçõesde entrada.
  3. Declarações de entrada: as declarações que são usadas no perfil técnico são retiradas do recipiente de declarações.
  4. Execução do perfil técnico: o perfil técnico troca as declarações pela entidade configurada. Por exemplo:
    • Redireciona o usuário para o provedor de identidade para concluir a conexão. Após conectar-se, o usuário retornará e prosseguirá com a execução do perfil técnico.
    • Chama uma API REST enquanto envia parâmetros como o InputClaims e recebe de volta informações como o OutputClaims.
    • Cria ou atualiza a conta do usuários.
    • 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 analisados pelo usuário. Somente perfis técnicos autodeclarados podem usar perfis técnicos de validação.
  6. Declarações de saída: declarações são retornadas ao recipiente de declaraçõ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 o perfil técnico ser concluído, o Azure AD B2C executa as transformações de declaraçõesde saída.
  8. Gerenciamento de sessão de SSO: persiste os dados do perfil técnico para a sessão usando o gerenciamento da sessão de SSO.

Um elemento TechnicalProfiles contém um conjunto de perfis técnicos com suporte no provedor de declarações. Cada provedor de declarações deve ter pelo menos um perfil técnico. O perfil técnico determina os pontos de extremidade e os protocolos necessários para comunicar-se com o provedor de declarações. Um provedor de declarações 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 Obrigatório Descrição
ID Sim Um identificador exclusivo do perfil técnico. O perfil técnico pode ser referenciado usando esse identificador em outros elementos no arquivo de política. Alguns exemplos são o OrchestrationSteps e o ValidationTechnicalProfile.

O elemento TechnicalProfile contém os seguintes elementos:

Elemento Ocorrências Descrição
Domínio 0:1 O nome de domínio do perfil técnico. Por exemplo, se o perfil técnico especificar o provedor de identidade Facebook, o nome de domínio será Facebook.com.
DisplayName 1:1 O nome de exibição do perfil técnico.
Descrição 0:1 A descrição do perfil técnico.
Protocolo 1:1 O protocolo usado 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 valor JWT representa um Token Web JSON de acordo com a especificação IETF. O valor SAML11 representa um token de segurança SAML 1.1 de acordo com a especificação OASIS. O valor SAML2 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.
CryptographicKeys 0:1 Uma lista de chaves de criptografia que são usadas no perfil técnico.
InputClaimsTransformations 0:1 Uma lista de referências definidas previamente a transformações de declarações que devem ser executadas antes que uma declaração seja enviada ao provedor de declarações ou à terceira parte confiável.
InputClaims 0:1 Uma lista de referências definidas previamente aos tipos de declaração que são usados como entrada no perfil técnico.
PersistedClaims 0:1 Uma lista de referências definidas previamente aos tipos de declaração persistentes pelo perfil técnico.
DisplayClaims 0:1 Uma lista de referências definidas previamente aos tipos de declaração que são apresentadas pelo perfil técnico autodeclarado. O recurso DisplayClaims está atualmente na versão preliminar.
OutputClaims 0:1 Uma lista de referências definidas previamente aos tipos de declaração que são usados como saída no perfil técnico.
OutputClaimsTransformations 0:1 Uma lista de referências definidas previamente a transformações de declarações que devem ser executadas depois que as declarações são recebidas do provedor de declarações.
ValidationTechnicalProfiles 0:n Uma lista de referências a outros perfis técnicos que o perfil técnico usa para fins de validação. Para saber mais, confira Perfil técnico de validação.
SubjectNamingInfo 0:1 Controla a produção do nome da entidade em tokens, em que o nome da entidade é especificado separadamente das declarações. Os exemplos são OAuth ou SAML.
IncludeInSso 0:1 Se o uso desse perfil técnico se aplicar ao comportamento de SSO para a sessão ou, ao invés disso, exigir interação explícita. Esse elemento só é válido em perfis SelfAsserted usados em 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 do qual todas as declarações de entrada e saídas devem ser adicionadas a esse perfil técnico. O perfil técnico referenciado precisa ser definido no mesmo arquivo de política.
IncludeTechnicalProfile 0:1 Um identificador de um perfil técnico do qual todos os dados devem ser adicionados a esse 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 um percurso do usuário.

Protocolo

O elemento Protocolo especifica o protocolo a ser usado para a comunicação com o outro parceiro comercial. O elemento Protocol contém os seguintes atributos:

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

Metadados

O elemento Metadados contém as opções de configuração relevantes para um protocolo específico. A lista de metadados com suporte é documentada na especificação do perfil técnico correspondente. Um elemento Metadados contém os seguintes elementos:

Elemento Ocorrências Descrição
Item 0:n Os metadados que se relacionam ao perfil técnico. Cada tipo de perfil técnico tem um conjunto diferente de itens de metadados. Confira a seção de tipos de perfil técnico para obter mais informações.

Item

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

Atributo Obrigatório Descrição
Chave Sim A chave de metadados. Confira 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 do 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 um relação de confiança com os serviços com os quais ele 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 de criptografia das chaves de política do Azure AD B2C. Então, o Azure AD B2C usa as chaves para estabelecer a confiança ou criptografar ou assinar um token. Essas relações de confiança consistem em:

O elemento CryptographicKeys contém o seguinte elemento:

Elemento Ocorrências Descrição
Chave 1:n Uma chave de criptografia usada neste perfil técnico.

Chave

O elemento Key contém o seguinte atributo:

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

Transformações de declarações de entrada

O elemento InputClaimsTransformations elemento pode conter uma coleção de elementos de transformações de declarações de entrada elementos usados para modificar as 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 transformações de declarações, podem ser declarações de entrada de uma transformação de declarações de entrada subsequentes. Dessa forma, você pode ter uma sequência de transformações de declarações dependentes entre si.

O elemento InputClaimsTransformations contém o seguinte elemento:

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

InputClaimsTransformation

O elemento InputClaimsTransformation contém o seguinte atributo:

Atributo Obrigatório Descrição
ReferenceId Sim Um identificador de uma transformação de declarações já definido 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 declarações adiciona o valor da email declaração à otherMails coleção antes de persistir os dados para o 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 retira as declarações que são usadas no perfil técnico do recipiente de declarações. Por exemplo, um perfil técnico autodeclarado usa as declarações de entrada para preencher antecipadamente 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 ao 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 Descrição
InputClaim 1:n Um tipo de declaração de entrada esperado.

InputClaim

O elemento InputClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
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. Assim, a declaração resultante poderá 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 da 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 seu nome do tipo de declaração for diferente do da outra parte. Por exemplo, o primeira nome da declaração é givenName, enquanto o parceiro usa uma declaraçã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 descritas anteriormente. O elemento também pode conter um valor padrão.
    • O elemento ClaimType da coleção DisplayClaims precisa ser definir o elemento UserInputType como qualquer tipo de entrada do usuário compatível com o Azure AD B2C. Alguns exemplos incluem TextBox ou DropdownSingleSelect.
  • Um controle de exibição é um elemento de interface do usuário que tem funcionalidade especial e interage com o serviço de 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 é a verificação de um endereço de email, 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 renderiza as declarações na tela.

O elemento DisplayClaims contém o seguinte elemento:

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

DisplayClaim

O elemento DisplayClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
ClaimTypeReferenceId Não O identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política ou no 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 no arquivo de política pai.
Obrigatório No 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.

Screenshot that shows a self-asserted technical profile with display claims.

No seguinte perfil técnico:

  • A primeira declaração de exibição faz referência ao emailVerificationControl controle de exibição, que coleta e verifica o endereço de email.
  • A quinta declaração de exibição faz 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>

Declarações persistentes

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

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

O elemento PersistedClaims contém o seguinte elemento:

Elemento Ocorrências Descrição
PersistedClaim 1:n O tipo de declaração que deverá persistir.

PersistedClaim

O elemento PersistedClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
ClaimTypeReferenceId Sim O identificador de um tipo de declaração já definido na seção ClaimsSchema 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 não existir.
PartnerClaimType Não O identificador do tipo de declaração do parceiro externo para o qual o tipo de declaração da 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 seu nome do tipo de declaração for diferente do da outra parte. Por exemplo, o primeira nome da declaração é givenName, enquanto o parceiro usa uma declaração chamada first_name.

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

<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 para o recipiente 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 Descrição
OutputClaim 1:n Um tipo de declaração de saída esperado.

OutputClaim

O elemento OutputClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
ClaimTypeReferenceId Sim O identificador de um tipo de declaração já definido na seção ClaimsSchema 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 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 da política especificado é mapeado. Se o atributo do tipo de declaração de parceiro 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 seu nome do tipo de declaração for diferente do da outra parte. Por exemplo, o primeira nome da declaração é givenName, enquanto o parceiro usa uma declaraçã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 recolocadas no recipiente de declaraçõ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 transformações de declarações, podem ser declarações de entrada de uma transformação de declarações de entrada subsequentes. Dessa forma, você pode ter uma sequência de transformações de declarações dependentes entre si.

O elemento OutputClaimsTransformations contém o seguinte elemento:

Elemento Ocorrências Descrição
OutputClaimsTransformation 1:n Os identificadores de transformações de declarações que devem ser executados antes que uma declaração seja enviada ao provedor de declarações ou à terceira parte confiável. Uma transformação de declarações pode ser usada para modificar as declarações de ClaimsSchema existentes ou gerar novas declarações.

OutputClaimsTransformation

O elemento OutputClaimsTransformation contém o seguinte atributo:

Atributo Obrigatório Descrição
ReferenceId Sim Um identificador de uma transformação de declarações já definido no arquivo de política ou no arquivo de política pai.

O seguinte perfil técnico faz referência à transformação de declarações AssertAccountEnabledIsTrue para avaliar se a conta está habilitada ou não após ler a declaração accountEnabled 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 as 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 ID do Microsoft Entra ou uma API REST. O perfil técnico de validação retorna declarações de saída ou o código de erro. A mensagem de erro é renderizada 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.

Diagram that shows a validation technical profile flow.

O elemento ValidationTechnicalProfiles contém o seguinte elemento:

Elemento Ocorrências Descrição
ValidationTechnicalProfile 1:n Os identificadores dos perfis técnicos 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 precisam aparecer nas declarações de saída do perfil técnico de referência.

ValidationTechnicalProfile

O elemento ValidationTechnicalProfile contém o seguinte atributo:

Atributo Obrigatório Descrição
ReferenceId Sim Um identificador de um perfil técnico já definido no arquivo de política ou no arquivo de política pai.

SubjectNamingInfo

O elemento SubjectNamingInfo define o nome da entidade usada em tokens em uma política da terceira parte confiável. O elemento SubjectNamingInfo contém o seguinte atributo:

Atributo Obrigatório Descrição
ClaimType Sim Um identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política.

Incluir perfil técnico

A alteração de configurações ou a adição de novas funcionalidades de um perfil técnico podem incluir outro perfil técnico. 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 de seus elementos de política, use a inclusão quando tiver vários perfis técnicos que compartilham os elementos principais. Use um perfil técnico comum com o conjunto comum de configuração, juntamente com perfis técnicos de tarefas específicas que incluem o perfil técnico comum.

Suponha que você tenha um perfil técnico de API REST com um único ponto de extremidade onde você precisa enviar diferentes conjuntos de declarações para cenários diferentes. Crie um perfil técnico comum com a funcionalidade compartilhada, como o URI do ponto de extremidade da API REST, metadados, tipo de autenticação e chaves de criptografia. 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 Obrigatório Descrição
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 em vários níveis

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 o AAD-UserReadUsingAlternativeSecurityId. Esse perfil técnico define o item de metadados RaiseErrorIfClaimsPrincipalDoesNotExist como true e gera um erro se uma conta social não existir no diretório. AAD-UserReadUsingAlternativeSecurityId-NoError substitui esse comportamento e desativa esta mensagem de erro.

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

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

<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 da sessão

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

Atributo Obrigatório Descrição
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 percursos do usuário

O ClaimsProviderSelections em um percurso do usuário define a lista de opções de seleção de 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:

  • Always: executa o perfil técnico.
  • Never: ignora o perfil técnico.
  • OnClaimsExistence: executa apenas quando existir uma determinada declaração, especificada no perfil técnico.
  • OnItemExistenceInStringCollectionClaim: executa apenas quando existir um item em uma declaração de coleção de cadeia de caracteres.
  • OnItemAbsenceInStringCollectionClaim: executa somente quando um item não existir em uma declaração de coleção de cadeia de caracteres.

Usar o OnClaimsExistence, OnItemExistenceInStringCollectionClaim ou OnItemAbsenceInStringCollectionClaim requer o fornecimento dos metadados a seguir:

  • ClaimTypeOnWhichToEnable: especifica o tipo da declaração a ser avaliada.
  • ClaimValueOnWhichToEnable: especifica o valor que deve ser comparado.

O seguinte perfil técnico é executado somente quando a coleção de cadeia de caracteres identityProviders contém 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>