ClaimsSchema

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.

O elemento ClaimsSchema define os tipos de afirmações que podem ser referenciados como parte da política. O esquema de afirmações é o lugar onde declaras as afirmações. Uma reivindicação pode ser nome, sobrenome, nome para exibição, número de telefone e muito mais. O elemento ClaimsSchema contém uma lista de elementos ClaimType. O elemento ClaimType contém o atributo Id , que é o nome da declaração.

<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="Id">
      <DisplayName>Surname</DisplayName>
      <DataType>string</DataType>
      <DefaultPartnerClaimTypes>
        <Protocol Name="OAuth2" PartnerClaimType="family_name" />
        <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
        <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
      </DefaultPartnerClaimTypes>
      <UserHelpText>Your surname (also known as family name or last name).</UserHelpText>
      <UserInputType>TextBox</UserInputType>

Tipo de reivindicação

O elemento ClaimType contém o seguinte atributo:

Atributo Necessário Descrição
ID Sim Um identificador usado para o tipo de declaração. Outros elementos podem usar esse identificador na política.

O elemento ClaimType contém os seguintes elementos:

Elemento Ocorrências Description
DisplayName 1:1 O título que é exibido para os usuários em várias telas. O valor pode ser localizado.
DataType 1:1 O tipo de crédito.
DefaultPartnerClaimTypes 0:1 Os tipos de declaração padrão do parceiro a serem usados para um protocolo especificado. O valor pode ser substituído no PartnerClaimType especificado nos elementos InputClaim ou OutputClaim . Use este elemento para especificar o nome padrão para um protocolo.
Máscara 0:1 Uma cadeia de caracteres opcional de mascaramento que pode ser aplicada ao exibir a declaração. Por exemplo, o número de telefone 324-232-4343 pode ser mascarado como XXX-XXX-4343.
UserHelpText 0:1 Uma descrição do tipo de declaração que pode ser útil para os usuários entenderem sua finalidade. O valor pode ser localizado.
UserInputType 0:1 O tipo de controle de entrada que deve estar disponível para o usuário ao inserir manualmente os dados de declaração para o tipo de declaração. Consulte os tipos de entrada do usuário definidos posteriormente nesta página.
AdminHelpText 0:1 Uma descrição do tipo de declaração que pode ser útil para os administradores entenderem sua finalidade.
Restrição 0:1 As restrições de valor para essa declaração, como uma expressão regular (Regex) ou uma lista de valores aceitáveis. O valor pode ser localizado.
PredicateValidationReference 0:1 Uma referência a um elemento PredicateValidationsInput . Os elementos PredicateValidationReference permitem que você execute um processo de validação para garantir que apenas dados formados corretamente sejam inseridos. Para obter mais informações, consulte Predicados.

DataType

O elemento DataType suporta os seguintes valores:

Tipo Descrição
boolean Representa um valor booleano (true ou false).
data Representa um instante no tempo, normalmente expresso como uma data de um dia. O valor da data segue a convenção ISO 8601.
dateTime Representa um instante no tempo, normalmente expresso como uma data e hora do dia. O valor da data segue a convenção ISO 8601 durante o tempo de execução e é convertido para o tempo de época do UNIX quando emitido como uma declaração no token.
duration Representa um intervalo de tempo em anos, meses, dias, horas, minutos e segundos. O formato de é PnYnMnDTnHnMnS, onde P indica positivo, ou N para valor negativo. nY é o número de anos seguido de um literal Y. nMo é o número de meses seguido de um literal Mo. nD é o número de dias seguido de um literal D. Exemplos: P21Y representa 21 anos. P1Y2Mo representa um ano e dois meses. P1Y2Mo5D representa um ano, dois meses e cinco dias. P1Y2M5DT8H5M20S representa um ano, dois meses, cinco dias, oito horas, cinco minutos e vinte segundos.
phoneNumber Representa um número de telefone.
número inteiro Representa número entre -2.147.483.648 e 2.147.483.647
long Representa número entre -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
string Representa texto como uma sequência de unidades de código UTF-16.
stringCollection Representa uma coleção de string.
userIdentity Representa uma identidade de usuário.
userIdentityCollection Representa uma coleção de userIdentity.

DefaultPartnerClaimTypes

O DefaultPartnerClaimTypes pode conter o seguinte elemento:

Elemento Ocorrências Description
Protocolo 1:n Lista de protocolos com o nome do tipo de declaração de parceiro padrão.

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. Os valores possíveis são: OAuth1, OAuth2, SAML2, OpenIdConnect.
PartnerClaimType Sim O nome do tipo de declaração a ser usado.

No exemplo a seguir, quando o Identity Experience Framework interage com um provedor de identidade SAML2 ou aplicativo de terceira parte confiável, a declaração de sobrenome é mapeada para http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname, com OpenIdConnect e OAuth2, a declaração é mapeada para family_name.

<ClaimType Id="surname">
  <DisplayName>Surname</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
    <Protocol Name="OAuth2" PartnerClaimType="family_name" />
    <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
    <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
  </DefaultPartnerClaimTypes>
</ClaimType>

Como resultado, o token JWT emitido pelo Azure AD B2C emite o family_name sobrenome do nome em vez de ClaimType.

{
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  "auth_time": 1535013501,
  "given_name": "David",
  "family_name": "Williams",
  "name": "David Williams",
}

Máscara

O elemento Mask contém os seguintes atributos:

Atributo Necessário Descrição
Type Sim O tipo da máscara de declaração. Valores possíveis: Simple ou Regex. O Simple valor indica que uma máscara de texto simples é aplicada à parte principal de uma declaração de cadeia de caracteres. O Regex valor indica que uma expressão regular é aplicada à declaração de cadeia de caracteres como um todo. Se o Regex valor for especificado, um atributo opcional também deverá ser definido com a expressão regular a ser usada.
Regex Não Se Type estiver definido como Regex, especifique a expressão regular a ser usada.

O exemplo a seguir configura uma declaração PhoneNumber com a Simple máscara. Para obter mais exemplos, confira a demonstração ao vivo da máscara simples Claim.

<ClaimType Id="PhoneNumber">
  <DisplayName>Phone Number</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Simple">XXX-XXX-</Mask>
  <UserHelpText>Your telephone number.</UserHelpText>
</ClaimType>

O Identity Experience Framework renderiza o número de telefone enquanto oculta os primeiros seis dígitos:

Reivindicação de número de telefone mostrada no navegador com os primeiros seis dígitos mascarados por Xs

O exemplo a seguir configura uma declaração AlternateEmail com a Regex máscara. Para mais amostras, confira a demonstração ao vivo da máscara Regex.

<ClaimType Id="AlternateEmail">
  <DisplayName>Please verify the secondary email linked to your account</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Regex" Regex="(?&lt;=.).(?=.*@)">*</Mask>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

O Identity Experience Framework processa apenas a primeira letra do endereço de e-mail e o nome de domínio de e-mail:

Reivindicação de e-mail mostrada no navegador com caracteres mascarados por asteriscos

Restrição

O elemento Restriction pode conter o seguinte atributo:

Atributo Necessário Description
MergeBehavior Não O método usado para mesclar valores de enumeração com um ClaimType em uma política pai com o mesmo identificador. Use esse atributo ao substituir uma declaração especificada na política base. Valores possíveis: Append, Prepend, ou ReplaceAll. O Append valor é uma coleção de dados que deve ser anexada ao final da coleção especificada na política pai. O Prepend valor é uma coleção de dados que deve ser adicionada antes da coleção especificada na política pai. O ReplaceAll valor é uma coleção de dados especificados na política pai que devem ser ignorados.

O elemento Restriction contém os seguintes elementos:

Elemento Ocorrências Description
Enumeração 1:n As opções disponíveis na interface do usuário para o usuário selecionar para uma declaração, como um valor em uma lista suspensa.
Padrão 1:1 A expressão regular a ser usada.

Enumeração

O elemento Enumeration define opções disponíveis para o usuário selecionar para uma declaração na interface do usuário, como um valor em , CheckboxMultiSelectDropdownSingleSelectou RadioSingleSelect. Como alternativa, você pode definir e localizar opções disponíveis com o elemento LocalizedCollections . Para procurar um item de uma coleção Enumeration de declaração, use a transformação de declarações GetMappedValueFromLocalizedCollection.

O elemento Enumeration contém os seguintes atributos:

Atributo Necessário Description
Texto Sim A cadeia de caracteres de exibição que é mostrada ao usuário na interface do usuário para essa opção.
Valor Sim O valor da declaração associado à seleção dessa opção.
SelectByDefault Não Indica se essa opção deve ou não ser selecionada por padrão na interface do usuário. Valores possíveis: True ou False.

O exemplo a seguir configura uma declaração de lista suspensa de cidade com um valor padrão definido como New York. Para obter mais exemplos, confira a demonstração ao vivo da enumeração de restrição de declaração.

<ClaimType Id="city">
  <DisplayName>city where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

Lista suspensa de cidades com um valor padrão definido como Nova York:

Controle suspenso renderizado no navegador e mostrando o valor padrão

Padrão

O elemento Pattern pode conter os seguintes atributos:

Atributo Necessário Description
RegularExpression Sim A expressão regular que as declarações desse tipo devem corresponder para serem válidas.
HelpText Não Uma mensagem de erro para os usuários se a verificação de expressão regular falhar.

O exemplo a seguir configura uma declaração de email com validação de entrada de expressão regular e texto de ajuda:

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
  <Protocol Name="OpenIdConnect" PartnerClaimType="email" />
  </DefaultPartnerClaimTypes>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

O Identity Experience Framework processa a declaração de endereço de e-mail com validação de entrada de formato de e-mail:

TextBox mostrando mensagem de erro acionada por restrição regex

UserInputType

O Azure AD B2C dá suporte a uma variedade de tipos de entrada do usuário, como uma caixa de texto, senha e lista suspensa que podem ser usadas ao inserir manualmente dados de declaração para o tipo de declaração. Você deve especificar o UserInputType quando coletar informações do usuário usando um perfil técnico autodeclarado e controles de exibição.

Confira a demonstração ao vivo do tipo de entrada do usuário.

O elemento UserInputType tipos de entrada de usuário disponíveis:

UserInputType ClaimType suportado Description
Caixa de seleçãoMultiSelect string Caixa suspensa de seleção múltipla. O valor da declaração é representado em uma cadeia de delimitador de vírgulas dos valores selecionados.
DateTimeDropdown date, dateTime Menus suspensos para selecionar um dia, mês e ano.
DropdownSingleSelect string Caixa suspensa de seleção única. O valor da declaração é o valor selecionado.
Caixa de e-mail string Campo de entrada de e-mail.
Parágrafo boolean, date, dateTime, duration, int, long, string Um campo que mostra texto apenas em uma marca de parágrafo.
Palavra-passe string Caixa de texto Palavra-passe.
RadioSingleSelect string Coleção de botões de opção. O valor da declaração é o valor selecionado.
Só de leitura boolean, date, dateTime, duration, int, long, string Caixa de texto somente leitura.
TextBox boolean, int, phoneNumber, string Caixa de texto de linha única.

TextBox

O tipo de entrada de usuário TextBox é usado para fornecer uma caixa de texto de linha única.

TextBox mostrando propriedades especificadas no tipo de declaração

<ClaimType Id="displayName">
  <DisplayName>Display Name</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your display name.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

Caixa de e-mail

O tipo de entrada de usuário EmailBox é usado para fornecer um campo de entrada de e-mail básico.

EmailBox mostrando propriedades especificadas no tipo de declaração

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>EmailBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

Palavra-passe

O tipo de entrada de usuário Senha é usado para registrar uma senha inserida pelo usuário.

Usando o tipo de declaração com senha

<ClaimType Id="password">
  <DisplayName>Password</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Enter password</UserHelpText>
  <UserInputType>Password</UserInputType>
</ClaimType>

DateTimeDropdown

O tipo de entrada de usuário DateTimeDropdown é usado para fornecer um conjunto de menus suspensos para selecionar um dia, mês e ano. Você pode usar os elementos Predicados e PredicateValidations para controlar os valores de data mínima e máxima. Para obter mais informações, consulte a seção Configurar um intervalo de datas de Predicados e PredicadosValidações.

Usando o tipo de declaração com datetimedropdown

<ClaimType Id="dateOfBirth">
  <DisplayName>Date Of Birth</DisplayName>
  <DataType>date</DataType>
  <UserHelpText>The date on which you were born.</UserHelpText>
  <UserInputType>DateTimeDropdown</UserInputType>
</ClaimType>

RadioSingleSelect

O tipo de entrada de usuário RadioSingleSelect é usado para fornecer uma coleção de botões de opção que permite ao usuário selecionar uma opção.

Usando o tipo de declaração com radiodsingleselect

<ClaimType Id="color">
  <DisplayName>Preferred color</DisplayName>
  <DataType>string</DataType>
  <UserInputType>RadioSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Blue" Value="Blue" SelectByDefault="false" />
    <Enumeration Text="Green " Value="Green" SelectByDefault="false" />
    <Enumeration Text="Orange" Value="Orange" SelectByDefault="true" />
  </Restriction>
</ClaimType>

O tipo de entrada de usuário DropdownSingleSelect é usado para fornecer uma caixa suspensa que permite ao usuário selecionar uma opção.

Usando o tipo de declaração com a lista suspensasingleselect

<ClaimType Id="city">
  <DisplayName>City where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

Caixa de seleçãoMultiSelect

O tipo de entrada de usuário CheckboxMultiSelect é usado para fornecer uma coleção de caixas de seleção que permite ao usuário selecionar várias opções.

Usando o tipo de declaração com caixa de seleçãomultiselecionar

<ClaimType Id="languages">
  <DisplayName>Languages you speak</DisplayName>
  <DataType>string</DataType>
  <UserInputType>CheckboxMultiSelect</UserInputType>
  <Restriction>
    <Enumeration Text="English" Value="English" SelectByDefault="true" />
    <Enumeration Text="France " Value="France" SelectByDefault="false" />
    <Enumeration Text="Spanish" Value="Spanish" SelectByDefault="false" />
  </Restriction>
</ClaimType>

Só de leitura

O tipo de entrada de usuário Somente leitura é usado para fornecer um campo somente leitura para exibir a declaração e o valor.

Usando o tipo de declaração com somente leitura

<ClaimType Id="membershipNumber">
  <DisplayName>Membership number</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your membership number (read only)</UserHelpText>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

Parágrafo

O tipo de entrada de usuário Parágrafo é usado para fornecer um campo que mostra texto somente em uma marca de parágrafo. Por exemplo, <p>text</p>. Um tipo OutputClaim de entrada de usuário Parágrafo de perfil técnico autodeclarado deve definir o Required atributo false (padrão). Esse tipo de entrada do usuário só é suportado em layouts de página autodeclarados. As páginas unificadas de entrada e inscrição (unifiedssp) podem não exibir isso corretamente.

Usando o tipo de declaração com parágrafo

<ClaimType Id="responseMsg">
  <DisplayName>Error message: </DisplayName>
  <DataType>string</DataType>
  <AdminHelpText>A claim responsible for holding response messages to send to the relying party</AdminHelpText>
  <UserHelpText>A claim responsible for holding response messages to send to the relying party</UserHelpText>
  <UserInputType>Paragraph</UserInputType>
</ClaimType>