Compartilhar via


Transformações de declarações de cadeias de caracteres

Este artigo fornece exemplos para usar as transformações de declarações de cadeias de caracteres do esquema da Identity Experience Framework no Azure Active Directory B2C (Azure AD B2C). Para obter mais informações, consulte transformações de declarações.

AssertStringClaimsAreEqual

Compara duas declarações e gera uma exceção quando elas não são iguais de acordo com a comparação especificada de inputClaim1, inputClaim2 e stringComparison.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputClaim1 string Tipo da primeira declaração, que será comparado.
InputClaim inputClaim2 string Tipo da segunda declaração, que será comparado.
InputParameter stringComparison string comparação de cadeia de caracteres, um dos valores: Ordinal, OrdinalIgnoreCase.

A transformação de declarações AssertStringClaimsAreEqual é sempre executada em um perfil técnico de validação que é chamado por um perfil técnico autodeclarado ou um DisplayControl. Os metadados UserMessageIfClaimsTransformationStringsAreNotEqual de um perfil técnico autodeclarado controla a mensagem de erro que é apresentada ao usuário. A mensagem de erro pode ser localizada.

Diagrama mostra como usar a transformação de declarações AssertStringClaimsAreEqual.

Exemplo de AssertStringClaimsAreEqual

Use essa transformação de declarações para garantir que duas declarações têm o mesmo valor. Caso contrário, uma mensagem de erro será gerada. O exemplo a seguir verifica se a declaração strongAuthenticationEmailAddress é igual à declaração de email. Caso contrário, uma mensagem de erro será gerada.

<ClaimsTransformation Id="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="strongAuthenticationEmailAddress" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
  </InputParameters>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • Parâmetros de entrada:
    • stringComparison: ordinalIgnoreCase
  • Resultado: Erro gerado

Chamando a transformação de declarações AssertStringClaimsAreEqual

O perfil técnico de validação login-NonInteractive chama a transformação de declarações AssertEmailAndStrongAuthenticationEmailAddressAreEqual.

<TechnicalProfile Id="login-NonInteractive">
  ...
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
  </OutputClaimsTransformations>
</TechnicalProfile>

O perfil técnico autodeclarado chama o perfil técnico login-NonInteractive de validação.

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
  <Metadata>
    <Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">Custom error message the email addresses you provided are not the same.</Item>
  </Metadata>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

BuildUri

Cria um URI de TOTP (senha avulsa por tempo limitado). O URI é uma combinação do identificador exclusivo do usuário, como endereço de email e uma chave secreta. O URI é posteriormente convertido em um código QR que é apresentado ao usuário. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim caminho string O identificador exclusivo do usuário, como endereço de email, nome de usuário ou número de telefone.
InputClaim query.secret string A chave secreta TOTP.
InputParameter scheme string A parte do esquema do URI. Por exemplo, otpauth.
InputParameter host string A parte do esquema do URI. Por exemplo, totp.
InputParameter query.issuer string A parte do emissor do URI. Por exemplo, {AuthenticatorIssuer}.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações.

Exemplo de BuildUri

A transformação de declarações a seguir gera um URI de TOTP que será exibido no código QR ou no link profundo.

<ClaimsTransformation Id="CreateUriString" TransformationMethod="BuildUri">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="uriLabel" TransformationClaimType="path" />
    <InputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="query.secret" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="scheme" DataType="string" Value="otpauth" />
    <InputParameter Id="host" DataType="string" Value="totp" />
    <InputParameter Id="query.issuer" DataType="string" Value="{AuthenticatorIssuer}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="qrCodeContent" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • caminho: emily@fabrikam.com
    • query.secret: fay2lj7ynpntjgqa
  • Parâmetros de entrada:
    • esquema: otpauth
    • host: totp
    • query.issuer: {AuthenticatorIssuer}
  • Declarações de saída:
    • outputClaim: otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo

ChangeCase

Altera a declaração fornecida para letra maiúscula ou minúscula, dependendo do operador. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputClaim1 string A declaração a ser alterada.
InputParameter toCase string Um dos seguintes valores: LOWER ou UPPER.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações.

Exemplo de ChangeCase

A transformação declaração a seguir altera a declaração de email para letras minúsculas.

<ClaimsTransformation Id="ChangeToLower" TransformationMethod="ChangeCase">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="toCase" DataType="string" Value="LOWER" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • email: SomeOne@contoso.com
  • Parâmetros de entrada:
    • toCase: LOWER
  • Declarações de saída:
    • email: someone@contoso.com

CompareClaims

Determina se uma declaração de cadeia de caracteres é igual à outra. O resultado é uma nova declaração booliana com um valor de true ou false. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputClaim1 string Tipo da primeira declaração, que será comparado.
InputClaim inputClaim2 string Tipo da segunda declaração, que será comparado.
InputParameter operador string Valores possíveis: EQUAL ou NOT EQUAL.
InputParameter ignoreCase string Especifica se essa comparação deve ignorar maiúsculas e minúsculas das cadeias de caracteres que estão sendo comparadas.
OutputClaim outputClaim booleano A declaração que é produzida após a invocação dessa transformação de declarações.

Exemplo de CompareClaims

Use essa transformação de declaração para verificar se uma declaração for igual à outra. A transformação de declarações a seguir verifica se o valor da declaração email é igual à declaração Verified.Email.

<ClaimsTransformation Id="CheckEmail" TransformationMethod="CompareClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="Email" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="Verified.Email" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
    <InputParameter Id="ignoreCase" DataType="string" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="SameEmailAddress" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • Parâmetros de entrada:
    • operador : NÃO É IGUAL
    • ignoreCase: true
  • Declarações de saída:
    • outputClaim: true

CompareClaimToValue

Determina se um valor de declaração é igual ao valor do parâmetro de entrada. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputClaim1 string Tipo da declaração, que será comparado.
InputParameter operador string Valores possíveis: EQUAL ou NOT EQUAL.
InputParameter compareTo string Comparação de cadeia de caracteres, um dos valores, ou seja, a cadeia de caracteres com a qual os valores de declaração de entrada devem ser comparados: Ordinal, OrdinalIgnoreCase.
InputParameter ignoreCase string Especifica se essa comparação deve ignorar maiúsculas e minúsculas das cadeias de caracteres que estão sendo comparadas.
OutputClaim outputClaim booleano A declaração que é produzida após a invocação dessa transformação de declarações.

Exemplo de CompareClaimToValue

Use essa transformação de declarações para verificar se uma declaração é igual ao valor especificado. Por exemplo, a seguinte transformação de declarações verifica se o valor da declaração termsOfUseConsentVersion é igual a V2.

<ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="compareTo" DataType="string" Value="V2" />
    <InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
    <InputParameter Id="ignoreCase" DataType="string" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim1: v1
  • Parâmetros de entrada:
    • compareTo: V2
    • operador : NÃO É IGUAL
    • ignoreCase: true
  • Declarações de saída:
    • outputClaim: true

CopyClaimIfPredicateMatch

Copia o valor de uma declaração para outra se o valor da declaração de entrada corresponde ao predicado de declaração de saída. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string Tipo da declaração, que será copiado.
OutputClaim outputClaim string O tipo de declaração que é produzido depois de invocar esta transformação de declarações. O valor da declaração de entrada é verificado em relação a esse predicado de declaração.

Exemplo de CopyClaimIfPredicateMatch

O exemplo a seguir tenta copiar o valor da declaração signInName para a declaração phoneNumber. Neste exemplo, o valor não será copiado. A declaração signInName não está no formato esperado, o de número de telefone. Para ver o exemplo completo, confira a política de pacote inicial Entrada por email ou número de telefone.

<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: bob@contoso.com
  • Declarações de saída:
    • outputClaim: a declaração de saída não será alterada de seu valor original.

Exemplo de CopyClaimIfPredicateMatch que corresponde ao predicado

Neste exemplo, a transformação de declarações copiará o valor. A declaração signInName está no formato correto, número de telefone.

  • Declarações de entrada:
    • inputClaim: +11234567890
  • Declarações de saída:
    • outputClaim: +11234567890

CreateOtpSecret

Cria uma declaração de cadeia de caracteres TOTP. A saída dessa transformação de declarações é um segredo TOTP que é armazenado posteriormente na conta do usuário Microsoft Azure AD B2C e compartilhado com o aplicativo Microsoft Authenticator. O aplicativo autenticador usa a chave para gerar um código TOTP que o usuário precisa para passar pela MFA. Sua política usa a chave para validar o código TOTP fornecido pelo usuário.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
OutputClaim outputClaim string A declaração que é produzida depois de invocar essa transformação de declarações, com o código TOTP gerado.

Exemplo de CreateOtpSecret

A transformação de declarações a seguir cria um segredo para o autenticador multifator TOTP.

<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de saída:
    • outputClaim: hmlcmd4ph6fph64c

CreateRandomString

Cria uma cadeia de caracteres aleatória usando o gerador de número aleatório. Se o gerador de número aleatório é do tipo integer, opcionalmente, um parâmetro de semente e um número máximo podem ser fornecidos. Um parâmetro de formato de cadeia de caracteres opcional permite que a saída seja formatada usando-o, e um parâmetro de base64 opcional especifica se a saída é randomGeneratorType [guid, inteiro] outputClaim (cadeia de caracteres) codificada em base64.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputParameter randomGeneratorType string Especifica o valor aleatório a ser gerado, GUID (ID global exclusivo) ou INTEGER (um número).
InputParameter stringFormat string [Opcional] Formate o valor aleatório.
InputParameter base64 booleano [Opcional] Converta o valor aleatório em base64. Se o formato de cadeia de caracteres for aplicado, o valor após o formato de cadeia de caracteres será codificado em base64.
InputParameter maximumNumber INT [Opcional] Para randomGeneratorType INTEGER somente. Especifique o número máximo.
InputParameter seed INT [Opcional] Para randomGeneratorType INTEGER somente. Especifique a semente para valor aleatório. Observação: a mesma semente produz a mesma sequência de números aleatórios.
OutputClaim outputClaim string As declarações que serão produzidas depois de invocar esta transformação de declarações. O valor aleatório.

Exemplo de CreateRandomString

O exemplo a seguir gera uma ID exclusiva global. Essa transformação de declarações é usada para criar o UPN (nome principal de usuário) aleatório.

<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
  <InputParameters>
    <InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Parâmetros de entrada:
    • randomGeneratorType: GUID
  • Declarações de saída:
    • outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc

Exemplo de CreateRandomString para criar um valor numérico

O exemplo a seguir gera um valor de inteiro aleatório entre 0 e 1.000. O valor é formatado para OTP_{valor aleatório}.

<ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
  <InputParameters>
    <InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER" />
    <InputParameter Id="maximumNumber" DataType="int" Value="1000" />
    <InputParameter Id="stringFormat" DataType="string" Value="OTP_{0}" />
    <InputParameter Id="base64" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Parâmetros de entrada:
    • randomGeneratorType: INTEGER
    • maximumNumber: 1000
    • stringFormat: OTP_{0}
    • base64: false
  • Declarações de saída:
    • outputClaim: OTP_853

CreateStringClaim

Cria uma declaração de cadeia de caracteres do parâmetro de entrada fornecido na transformação. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputParameter value string A cadeia de caracteres a ser definida. Esse parâmetro de entrada dá suporte a expressões de transformação de declarações de cadeia de caracteres.
OutputClaim createdClaim string A declaração que é produzida depois de invocar esta transformação de declarações, com o valor especificado no parâmetro de entrada.

Exemplo de CreateStringClaim

A transformação de declarações a seguir cria um valor de cadeia de caracteres com termos de serviço.

<ClaimsTransformation Id="CreateTermsOfService" TransformationMethod="CreateStringClaim">
  <InputParameters>
    <InputParameter Id="value" DataType="string" Value="Contoso terms of service..." />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="TOS" TransformationClaimType="createdClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Parâmetro de entrada:
    • value: termos de serviço da Contoso…
  • Declarações de saída:
    • createdClaim: a declaração TOS contém o valor "Termos de serviço da Contoso...".

FormatLocalizedString

Formata várias declarações de acordo com uma cadeia de caracteres de formato localizada fornecida. Essa transformação usa o método C# String.Format. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaims string A coleção de declarações de entrada que atua como os parâmetros de formato da cadeia de caracteres {0}, {1} e {2}.
InputParameter stringFormatId string O StringId de uma cadeia de caracteres localizada.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações.

Observação

Não há limite para o número de declarações de entrada que você pode especificar, mas o comprimento máximo da cadeia de caracteres formatada é 4000.

Para usar a transformação de declarações FormatLocalizedString:

  1. Defina uma cadeia de caracteres de localização e associe-a a um self-asserted-technical-profile.
  2. O ElementType do elemento LocalizedString precisa ser configurado como FormatLocalizedStringTransformationClaimType.
  3. O StringId é um identificador exclusivo que você define e usa mais tarde na sua transformação de declarações stringFormatId.
  4. Na transformação de declarações, especifique a lista de declarações a serem definidas com a cadeia de caracteres localizada. Em seguida, defina o stringFormatId como o StringId do elemento da cadeia de caracteres localizada.
  5. Em um perfil técnico autodeclarado ou uma transformação de declaração de entrada ou saída de controle de exibição, faça uma referência à transformação de declarações.

Exemplo de FormatLocalizedString

O exemplo a seguir gera uma mensagem de erro quando uma conta já está no diretório. O exemplo define cadeias de caracteres localizadas em inglês (padrão) e espanhol.

<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
   </SupportedLanguages>

  <LocalizedResources Id="api.localaccountsignup.en">
    <LocalizedStrings>
      <LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>
      </LocalizedStrings>
    </LocalizedResources>
  <LocalizedResources Id="api.localaccountsignup.es">
    <LocalizedStrings>
      <LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">Este correo electrónico "{0}" ya es una cuenta de esta organización. Haga clic en Siguiente para iniciar sesión con esa cuenta.</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
</Localization>

A transformação de declarações cria uma mensagem de resposta com base na cadeia de caracteres localizada. A mensagem contém o endereço de email do usuário inserido na cadeia de caracteres ResponseMessge_EmailExists localizada.

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: sarah@contoso.com
  • Parâmetros de entrada:
    • stringFormat: ResponseMessge_EmailExists
  • Declarações de saída:
    • outputClaim: o email "sarah@contoso.com" já é uma conta nesta organização. Selecione Avançar para entrar com essa conta.

FormatStringClaim

Formata uma declaração de acordo com a cadeia de caracteres de formato fornecida. Essa transformação usa o método C# String.Format. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string A declaração que atua como o parâmetro {0} de formato da cadeia de caracteres.
InputParameter stringFormat string O formato da cadeia de caracteres, incluindo o parâmetro {0}. Esse parâmetro de entrada dá suporte a expressões de transformação de declarações de cadeia de caracteres.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações.

Observação

O tamanho máximo permitido do formato de cadeia de caracteres é 4000.

Exemplo de FormatStringClaim

Use essa transformação de declarações para formatar qualquer cadeia de caracteres com um parâmetro {0}. O exemplo a seguir cria um userPrincipalName. Todos os perfis técnicos do provedor de identidade social, como Facebook-OAUTH chama CreateUserPrincipalName para gerar um userPrincipalName.

<ClaimsTransformation Id="CreateUserPrincipalName" TransformationMethod="FormatStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="cpim_{0}@{RelyingPartyTenantId}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9
  • Parâmetros de entrada:
    • stringFormat: cpim_{0}@{RelyingPartyTenantId}
  • Declarações de saída:
    • outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com

FormatStringMultipleClaims

Formata duas declarações de acordo com a cadeia de caracteres de formato fornecida. Essa transformação usa o método C# String.Format. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputClaim1 string A declaração que atua como o parâmetro {0} de formato da cadeia de caracteres.
InputClaim inputClaim2 string A declaração que atua como o parâmetro {1} de formato da cadeia de caracteres.
InputParameter stringFormat string O formato da cadeia de caracteres, incluindo os parâmetros {0} e {1}. Esse parâmetro de entrada dá suporte a expressões de transformação de declarações de cadeia de caracteres.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações.

Observação

O tamanho máximo permitido do formato de cadeia de caracteres é 4000.

Exemplo de FormatStringMultipleClaims

Use essa transformação de declarações para formatar qualquer cadeia de caracteres com dois parâmetros, {0} e {1}. O exemplo a seguir cria um displayName com o formato especificado:

<ClaimsTransformation Id="CreateDisplayNameFromFirstNameAndLastName" TransformationMethod="FormatStringMultipleClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="{0} {1}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim1: Joe
    • inputClaim2: Fernando
  • Parâmetros de entrada:
    • stringFormat: {0}{1}
  • Declarações de saída:
    • outputClaim: Joe Fernando

GetLocalizedStringsTransformation

Copia cadeias de caracteres localizadas em declarações. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
OutputClaim O nome da cadeia de caracteres localizada string Lista de tipos de declaração que serão produzidos depois de invocar essa transformação de declaração.

Para usar a transformação de declarações GetLocalizedStringsTransformation:

  1. Defina uma cadeia de caracteres de localização para asua definição de conteúdo, como api.selfasserted.

  2. O ElementType do elemento LocalizedString precisa ser configurado como GetLocalizedStringsTransformationClaimType.

  3. O StringId é um identificador exclusivo que você define e usa mais tarde na sua transformação de declarações.

  4. Na transformação de declarações, especifique a lista de declarações a serem definidas com a cadeia de caracteres localizada. O ClaimTypeReferenceId é uma referência a uma declaração já definida na seção ClaimsSchema na política. O TransformationClaimType é o nome da cadeia de caracteres localizada, conforme definido no StringId do elemento LocalizedString.

  5. Em uma transformação de declarações de perfil técnico autodeclarada, ou uma transformação de declarações, faça uma referência à transformação de declarações.

  6. Associe o perfil técnico à definição de conteúdo, tal como api.selfasserted. O exemplo a seguir mostra como associar um perfil técnico à definição de conteúdo api.selfasserted.

    <Metadata>
      <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
    </Metadata>
    

O diagrama a seguir mostra como configurar a transformação de declarações com os elementos de localização:

Diagrama mostra como usar a transformação de declarações GetLocalizedStringsTransformation.

Exemplo de GetLocalizedStringsTransformation

O exemplo a seguir pesquisa o assunto do email, o corpo, sua mensagem de código e a assinatura do email, de cadeias de caracteres localizadas. As declarações são usadas posteriormente pelo modelo de verificação de email personalizado.

Defina cadeias de caracteres localizadas em inglês (padrão) e espanhol.

<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
   </SupportedLanguages>

  <LocalizedResources Id="api.localaccountsignup.en">
    <LocalizedStrings>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>
     </LocalizedStrings>
   </LocalizedResources>
   <LocalizedResources Id="api.localaccountsignup.es">
     <LocalizedStrings>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Código de verificación del correo electrónico de la cuenta de Contoso</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Gracias por comprobar la cuenta de </LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Su código es</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Atentamente</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
</Localization>

A transformação de declaração define o valor do tipo de declaração assunto com o valor StringId email_subject.

<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
    <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
    <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
   </OutputClaims>
</ClaimsTransformation>
  • Declarações de saída:
    • subject: Código de verificação de email da conta da Contoso
    • Mensagem: Obrigado por verificar sua conta!
    • codeIntro: Seu código é
    • signature: Atenciosamente

GetMappedValueFromLocalizedCollection

Mapeia um elemento da coleção Restriction da declaração de entrada. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim mapFromClaim string A declaração que contém o texto a ser pesquisado nas declarações restrictionValueClaim com a coleção Restrição.
OutputClaim restrictionValueClaim string A declaração que contém a coleção Restrição. Depois que a transformação de declarações for invocada, o valor dessa declaração conterá o valor do item selecionado.

Exemplo de GetMappedValueFromLocalizedCollection

O exemplo a seguir procura a descrição da mensagem de erro com base na chave de erro. A declaração responseMsg contém uma coleção de mensagens de erro para apresentar ao usuário final ou a ser enviada para a terceira parte confiável.

<ClaimType Id="responseMsg">
  <DisplayName>Error message: </DisplayName>
  <DataType>string</DataType>
  <UserInputType>Paragraph</UserInputType>
  <Restriction>
    <Enumeration Text="B2C_V1_90001" Value="You cannot sign in because you are a minor" />
    <Enumeration Text="B2C_V1_90002" Value="This action can only be performed by gold members" />
    <Enumeration Text="B2C_V1_90003" Value="You have not been enabled for this operation" />
  </Restriction>
</ClaimType>

A transformação de declarações procura o texto do item e retorna seu valor. Se a restrição é localizada usando <LocalizedCollection>, a transformação de declarações retorna o valor localizado.

<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />        
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • mapFromClaim: B2C_V1_90001
  • Declarações de saída:
    • restrictionValueClaim: não é possível entrar porque você é secundário.

LookupValue

Procura um valor de declaração em uma lista de valores com base no valor de outra declaração. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim inputParameterId string A declaração que contém o valor de pesquisa
InputParameter string Coleção de inputParameters.
InputParameter errorOnFailedLookup booleano Controlar se um erro é retornado quando nenhuma pesquisa corresponde.
OutputClaim outputClaim string A declaração que será produzida depois de invocar esta transformação de declarações. O valor da Id da correspondência.

Exemplo de LookupValue

O exemplo a seguir procura o nome de domínio em uma das coleções inputParameters. A transformação de declarações procura o nome de domínio no identificador e retorna seu valor (uma ID de aplicativo).

 <ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
    <InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
    <InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
    <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputParameterId: test.com
  • Parâmetros de entrada:
    • contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
    • microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
    • test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
    • errorOnFailedLookup: false
  • Declarações de saída:
    • outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9

Exemplo de LookupValue com erro

Quando o parâmetro de entrada errorOnFailedLookup está definido como true, a transformação da declaração LookupValue é sempre executada a partir de um perfil técnico de validação que é chamado por um perfil técnico autodeclarado ou um DisplayConrtol. Os metadados LookupNotFound de um perfil técnico autodeclarado controla a mensagem de erro que é apresentada ao usuário.

Diagrama mostra como usar a transformação de declarações LookupValue.

O exemplo a seguir procura o nome de domínio em uma das coleções inputParameters. A transformação de declarações procura o nome de domínio no identificador e retorna o valor (uma ID de aplicativo), ou dá origem a uma mensagem de erro.

 <ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
    <InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
    <InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
    <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputParameterId: live.com
  • Parâmetros de entrada:
    • contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
    • microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
    • test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
    • errorOnFailedLookup: true
  • Erro:
    • Nenhuma correspondência encontrada para o valor de declaração de entrada na lista de IDs de parâmetro de entrada e errorOnFailedLookup é true.

NullClaim

Limpa o valor de uma determinada declaração. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
OutputClaim claim_to_null string O valor da declaração é definido como NULL.

Exemplo de NullClaim

Use essa transformação de declaração para remover dados desnecessários do recipiente de propriedade de declarações, para que o cookie de sessão seja menor. O exemplo a seguir remove o valor do tipo de declaração TermsOfService.

<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
  <OutputClaims>
  <OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • outputClaim: Bem-vindo ao Aplicativo da Contoso. Se você continuar a navegar e usar esse site, estará concordando em seguir e estará vinculado aos seguintes termos e condições...
  • Declarações de saída:
    • outputClaim: NULO

ParseDomain

Obtém a parte do domínio de um endereço de email. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim emailAddress string A declaração que contém o endereço de email.
OutputClaim domínio string A declaração que é produzida depois de invocar esta transformação de declarações – o domínio.

Exemplo de ParseDomain

Use essa transformação de declarações para analisar o nome de domínio depois do símbolo @ do usuário. A transformação de declarações a seguir demonstra como analisar o nome de domínio de uma declaração de email.

<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • emailAddress: joe@outlook.com
  • Declarações de saída:
    • domain: outlook.com

SetClaimIfBooleansMatch

Verifica se uma declaração booliana é true ou false. Em caso afirmativo, define as declarações de saída com o valor presente no parâmetro de entrada outputClaimIfMatched. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim claimToMatch string O tipo da declaração, que será verificado. Valor nulo gerará uma exceção.
InputParameter matchTo string O valor a ser comparado com a declaração de entrada claimToMatch. Valores possíveis: true ou false.
InputParameter outputClaimIfMatched string O valor a ser definido se a declaração de entrada for igual ao parâmetro de entrada matchTo.
OutputClaim outputClaim string Se a declaração de entrada claimToMatch for igual ao parâmetro de entrada matchTo, essa declaração de saída conterá o valor do parâmetro de entrada outputClaimIfMatched.

Exemplo de SetClaimIfBooleansMatch

Por exemplo, a seguinte transformação de declarações verifica se o valor da declaração hasPromotionCode é igual a true. Em caso afirmativo, ela retorna o valor de Código de promoção não encontrado.

<ClaimsTransformation Id="GeneratePromotionCodeError" TransformationMethod="SetClaimIfBooleansMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="hasPromotionCode" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="true" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="Promotion code not found." />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="promotionCode" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • claimToMatch: true
  • Parâmetros de entrada:
    • matchTo: true
    • outputClaimIfMatched: "Código de promoção não encontrado".
  • Declarações de saída:
    • outputClaim: "Código de promoção não encontrado."

SetClaimsIfRegexMatch

Verifica se uma declaração de cadeia de caracteres claimToMatch e o parâmetro de entrada matchTo são iguais e define as declarações de saída com o valor presente no parâmetro de entrada outputClaimIfMatched, juntamente com a declaração de saída do resultado de comparação, que deve ser definida como true ou false com base no resultado da comparação.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim claimToMatch string Tipo da declaração, que será comparado.
InputParameter matchTo string A expressão regular para fazer a correspondência.
InputParameter outputClaimIfMatched string O valor a ser definido se as cadeias de caracteres forem iguais.
InputParameter extractGroups booleano [Opcional] Especifica se a correspondência do Regex deve extrair valores de grupo. Valores possíveis: true ou false (padrão).
OutputClaim outputClaim string Se a expressão regular corresponder, essa declaração de saída conterá o valor do parâmetro de entrada outputClaimIfMatched. Ou Null, se não houver correspondência.
OutputClaim regexCompareResultClaim booleano A expressão regular corresponde ao tipo de declaração de saída do resultado, que deve ser definido como true ou false com base no resultado da correspondência.
OutputClaim O nome da declaração string Se o parâmetro de entrada extractGroups for definido como true, a lista de tipos de declaração produzidos após essa transformação de declarações ter sido invocada. O nome da declaração deve corresponder ao nome do grupo Regex.

Exemplo de SetClaimsIfRegexMatch

Verifica se o número de telefone fornecido é válido, com base no padrão de expressão regular de número de telefone.

<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="SetClaimsIfRegexMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phone" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="^[0-9]{4,16}$" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="iPhone" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isPhoneBoolean" TransformationClaimType="regexCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • claimToMatch: "64854114520"
  • Parâmetros de entrada:
    • matchTo: "^[0-9]{4,16}$"
    • outputClaimIfMatched: "Phone"
  • Declarações de saída:
    • outputClaim: "iPhone"
    • regexCompareResultClaim: true

Exemplo de SetClaimsIfRegexMatch com grupos de extração

Verifica se o endereço de email fornecido é válido e retorna o alias de email. Confira a Demonstração ao vivo desta transformação de declarações com grupos de extração.

<ClaimsTransformation Id="GetAliasFromEmail" TransformationMethod="SetClaimsIfRegexMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="(?&lt;mailAlias&gt;.*)@(.*)$" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="isEmail" />
    <InputParameter Id="extractGroups" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isEmailString" TransformationClaimType="regexCompareResultClaim" />
    <OutputClaim ClaimTypeReferenceId="mailAlias" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • claimToMatch: "emily@contoso.com"
  • Parâmetros de entrada:
    • matchTo: (?&lt;mailAlias&gt;.*)@(.*)$
    • outputClaimIfMatched: "isEmail"
    • extractGroups: true
  • Declarações de saída:
    • outputClaim: "isEmail"
    • regexCompareResultClaim: true
    • mailAlias: emily

SetClaimsIfStringsAreEqual

Verifica se uma declaração de cadeia de caracteres e o parâmetro de entrada matchTo são iguais, e define as declarações de saída com o valor presente nos parâmetros de entrada stringMatchMsg e stringMatchMsgCode, juntamente com a declaração de saída do resultado de comparação, que deve ser definida como true ou false com base no resultado da comparação.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string Tipo da declaração, que será comparado.
InputParameter matchTo string A cadeia de caracteres a ser comparada com inputClaim.
InputParameter stringComparison string Valores possíveis: Ordinal ou OrdinalIgnoreCase.
InputParameter stringMatchMsg string Primeiro valor a ser definido se as cadeias de caracteres forem iguais.
InputParameter stringMatchMsgCode string Segundo valor a ser definido se as cadeias de caracteres forem iguais.
OutputClaim outputClaim1 string Se as cadeias de caracteres forem iguais, essa declaração de saída conterá o valor do parâmetro de entrada stringMatchMsg.
OutputClaim outputClaim2 string Se as cadeias de caracteres forem iguais, essa declaração de saída conterá o valor do parâmetro de entrada stringMatchMsgCode.
OutputClaim stringCompareResultClaim booleano O tipo de declaração de saída do resultado de comparação, que deve ser definido como true ou false com base no resultado da comparação.

Exemplo de SetClaimsIfStringsAreEqual

É possível usar essa transformação de declarações para verificar se uma declaração é igual ao valor especificado. Por exemplo, a seguinte transformação de declarações verifica se o valor da declaração termsOfUseConsentVersion é igual a v1. Se sim, altere o resultado para v2.

<ClaimsTransformation Id="CheckTheTOS" TransformationMethod="SetClaimsIfStringsAreEqual">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="v1" />
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    <InputParameter Id="stringMatchMsgCode" DataType="string" Value="B2C_V1_90005" />
    <InputParameter Id="stringMatchMsg" DataType="string" Value="The TOS is upgraded to v2" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="outputClaim1" />
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeCode" TransformationClaimType="outputClaim2" />
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeResult" TransformationClaimType="stringCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: v1
  • Parâmetros de entrada:
    • matchTo: V1
    • stringComparison: ordinalIgnoreCase
    • stringMatchMsgCode: B2C_V1_90005
    • stringMatchMsg: o TOS é atualizado para v2
  • Declarações de saída:
    • outputClaim1: B2C_V1_90005
    • outputClaim2: O TOS é atualizado para v2
    • stringCompareResultClaim: true

SetClaimsIfStringsMatch

Verifica se uma declaração de cadeia de caracteres matchTo e o parâmetro de entrada são iguais e define as declarações de saída com o valor presente no parâmetro de entrada outputClaimIfMatched , juntamente com a declaração de saída do resultado de comparação, que deve ser definida como true ou false com base no resultado da comparação.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim claimToMatch string Tipo da declaração, que será comparado.
InputParameter matchTo string A cadeia de caracteres a ser comparada com inputClaim.
InputParameter stringComparison string Valores possíveis: Ordinal ou OrdinalIgnoreCase.
InputParameter outputClaimIfMatched string O valor a ser definido se as cadeias de caracteres forem iguais.
OutputClaim outputClaim string Se as cadeias de caracteres forem iguais, essa declaração de saída conterá o valor do parâmetro de entrada outputClaimIfMatched. Ou nulo se as cadeias de caracteres não corresponderem.
OutputClaim stringCompareResultClaim booleano O tipo de declaração de saída do resultado de comparação, que deve ser definido como true ou false com base no resultado da comparação.

Exemplo de SetClaimsIfStringsMatch

Por exemplo, a seguinte transformação de declarações verifica se o valor da declaração ageGroup é igual a Minor. Em caso afirmativo, retorne o valor para B2C_V1_90001.

<ClaimsTransformation Id="SetIsMinor" TransformationMethod="SetClaimsIfStringsMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="ageGroup" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="Minor" />
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="B2C_V1_90001" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isMinor" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isMinorResponseCode" TransformationClaimType="stringCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • claimToMatch: Secundária
  • Parâmetros de entrada:
    • matchTo: Secundária
    • stringComparison: ordinalIgnoreCase
    • outputClaimIfMatched: B2C_V1_90001
  • Declarações de saída:
    • isMinorResponseCode: true
    • isMinor: B2C_V1_90001

StringContains

Determina se uma substring especificada ocorre na declaração de entrada. O resultado é uma nova declaração booliana com um valor de true ou false. true se o parâmetro de valor ocorrer nessa cadeia de caracteres, caso contrário, false.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string O tipo de declaração, que será pesquisado.
InputParameter contains string O valor a pesquisar.
InputParameter ignoreCase string Especifica se essa comparação deve ignorar maiúsculas e minúsculas das cadeias de caracteres que estão sendo comparadas.
OutputClaim outputClaim string A declaração que é produzida após a invocação dessa transformação de declarações. Um indicador booleano se a substring ocorrer na declaração de entrada.

Exemplo de StringContains

Use essa transformação de declaração para verificar se um tipo de declaração de cadeia de caracteres contém uma substring. De acordo com o exemplo, verifica se o tipo de declaração da cadeia de caracteres roles contém o valor de admin.

<ClaimsTransformation Id="CheckIsAdmin" TransformationMethod="StringContains">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim"/>
  </InputClaims>
  <InputParameters>
    <InputParameter  Id="contains" DataType="string" Value="admin"/>
    <InputParameter  Id="ignoreCase" DataType="string" Value="true"/>
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim"/>
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: "Admin, Approver, Editor"
  • Parâmetros de entrada:
    • contains: "admin,"
    • ignoreCase: true
  • Declarações de saída:
    • outputClaim: true

StringSubstring

Extrai partes de um tipo de declaração de cadeia de caracteres, iniciando pelo caractere na posição especificada e retorna o número especificado de caracteres. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string O tipo de declaração que contém a cadeia de caracteres.
InputParameter startIndex INT A posição do caractere inicial com base em zero de uma substring nessa instância.
InputParameter comprimento INT O número de caracteres na substring.
OutputClaim outputClaim string Uma cadeia de caracteres equivalente à substring do comprimento que inicia em startIndex nessa instância, ou Empty se startIndex for igual ao comprimento dessa instância e o comprimento for zero.

Exemplo de StringSubstring

Por exemplo, obtenha o prefixo do país ou da região do número de telefone.

<ClaimsTransformation Id="GetPhonePrefix" TransformationMethod="StringSubstring">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="startIndex" DataType="int" Value="0" />
  <InputParameter Id="length" DataType="int" Value="2" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phonePrefix" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: "+1644114520"
  • Parâmetros de entrada:
    • startIndex: 0
    • comprimento: 2
  • Declarações de saída:
    • outputClaim: "+1"

StringReplace

Pesquisa uma cadeia de caracteres do tipo de declaração em um valor especificado e retorna uma nova cadeia de caracteres do tipo de declaração em que todas as ocorrências de uma cadeia de caracteres especificada na atual são substituídas por outra cadeia de caracteres especificada.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string O tipo de declaração que contém a cadeia de caracteres.
InputParameter oldValue string A cadeia de caracteres a ser pesquisada.
InputParameter newValue string A cadeia de caracteres para substituir todas as ocorrências de oldValue
OutputClaim outputClaim booleano Uma cadeia de caracteres equivalente à atual, exceto que todas as instâncias de oldValue foram substituídas por newValue. Se oldValue não for encontrado na instância atual, o método retornará a instância atual inalterada.

Exemplo de StringReplace

Por exemplo, normalize um número de telefone removendo os caracteres -

<ClaimsTransformation Id="NormalizePhoneNumber" TransformationMethod="StringReplace">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="oldValue" DataType="string" Value="-" />
  <InputParameter Id="newValue" DataType="string" Value="" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: "+164-411-452-054"
  • Parâmetros de entrada:
    • oldValue: "-"
    • newValue: ""
  • Declarações de saída:
    • outputClaim: "+164411452054"

StringJoin

Concatena os elementos de um tipo de declaração de coleção de cadeia de caracteres especificado, usando o separador especificado entre cada elemento ou membro.

Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim stringCollection Uma coleção que contém as cadeias de caracteres a serem concatenadas.
InputParameter delimiter string A cadeia de caracteres a ser usada como separador, como vírgula ,.
OutputClaim outputClaim string Uma cadeia de caracteres que consiste dos membros da coleção de cadeia de caracteres inputClaim, delimitada pelo parâmetro de entrada delimiter.

Exemplo de StringJoin

O exemplo a seguir usa uma coleção de cadeias de caracteres de funções de usuário e a converte em uma cadeia de caracteres que usa vírgula como delimitador. Você pode usar esse método para armazenar uma coleção de cadeia de caracteres na conta de usuário do Azure AD B2C. Posteriormente, ao ler a conta a partir do diretório, use StringSplit para converter a cadeia de caracteres que usa vírgula como delimitador de volta à coleção de cadeia de caracteres.

<ClaimsTransformation Id="ConvertRolesStringCollectionToCommaDelimiterString" TransformationMethod="StringJoin">
  <InputClaims>
   <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter DataType="string" Id="delimiter" Value="," />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="rolesCommaDelimiterConverted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: [ "Admin", "Author", "Reader" ]
  • Parâmetros de entrada:
    • delimiter: ","
  • Declarações de saída:
    • outputClaim: "Admin,Author,Reader"

StringSplit

Retorna uma matriz de cadeia de caracteres que contém as substrings nessa instância que são delimitadas por elementos de uma cadeia de caracteres especificada. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Observações
InputClaim InputClaim string Um tipo de declaração de cadeia de caracteres que contém as substrings a serem divididas.
InputParameter delimiter string A cadeia de caracteres a ser usada como separador, como vírgula ,.
OutputClaim outputClaim stringCollection Uma coleção de cadeias de caracteres cujos elementos contêm as substrings nessa cadeia de caracteres delimitadas pelo parâmetro de entrada delimiter.

Observação

Todos os elementos existentes do stringCollection OutputClaim serão removidos.

Exemplo de StringSplit

O exemplo a seguir usa uma cadeia de caracteres de funções de usuário que usa vírgula com delimitador e a converte em uma coleção de cadeia de caracteres.

<ClaimsTransformation Id="ConvertRolesToStringCollection" TransformationMethod="StringSplit">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="rolesCommaDelimiter" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
  <InputParameter DataType="string" Id="delimiter" Value="," />
    </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="roles" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: Admin,Author,Reader
  • Parâmetros de entrada:
    • delimiter: ","
  • Declarações de saída:
    • outputClaim: [ "Admin", "Author", "Reader" ]

Expressões de transformações de declaração de cadeia de caracteres

Expressões de transformações de declaração nas políticas personalizadas do Azure AD B2C fornecem informações de contexto sobre a ID do locatário e a ID do perfil técnico.

Expression Descrição Exemplo
{TechnicalProfileId} O nome do perfil técnico. Facebook-OAUTH
{RelyingPartyTenantId} A ID do locatário da política de terceira parte confiável. your-tenant.onmicrosoft.com
{TrustFrameworkTenantId} A ID do locatário e da estrutura de confiança. your-tenant.onmicrosoft.com

Próximas etapas