Partilhar via


Transformações de declarações de cadeia de caracteres

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

AssertStringClaimsAreEqual

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

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim1 string Primeiro tipo de alegação, que deve ser comparado.
InputClaim inputClaim2 string Segundo tipo de alegação, que deve ser comparado.
InputParameter stringComparação string string comparison, um dos valores: Ordinal, OrdinalIgnoreCase.

A transformação de declarações AssertStringClaimsAreEqual é sempre executada a partir de um perfil técnico de validação que é chamado por um perfil técnico autodeclarado ou um DisplayControl. Os UserMessageIfClaimsTransformationStringsAreNotEqual metadados de um perfil técnico autodeclarado controlam a mensagem de erro que é apresentada ao usuário. As mensagens de erro podem ser localizadas.

O diagrama mostra como usar as declarações de cadeia de caracteres de asserção são transformação de declarações iguais.

Exemplo de AssertStringClaimsAreEqual

Você pode usar essa transformação de declarações para garantir que duas declarações tenham o mesmo valor. Caso contrário, uma mensagem de erro é lançada. O exemplo a seguir verifica se a declaração strongAuthenticationEmailAddress é igual à declaração de email . Caso contrário, uma mensagem de erro será lançada.

<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 lançado

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 de login de validação NonInteractive .

<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 senha de tempo com base na senha de tempo (TOTP). O URI é uma combinação do identificador exclusivo do usuário, como endereço de e-mail, e uma chave secreta. O URI é posteriormente convertido em um código QR que é apresentado ao usuário. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim path string O identificador exclusivo do usuário, como endereço de e-mail, nome de usuário ou número de telefone.
InputClaim query.secret string A chave secreta TOTP.
InputParameter scheme string O esquema faz parte do URI. Por exemplo, otpauth.
InputParameter host string O esquema faz parte do URI. Por exemplo, totp.
InputParameter query.emissor string A parte do emissor do URI. Por exemplo, {AuthenticatorIssuer}.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada.

Exemplo de BuildUri

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

<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
    • anfitrião: totp
    • query.emissor: {AuthenticatorIssuer}
  • Declarações de saída:
    • outputClaim: otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo

ChangeCase

Altera o caso da reivindicação fornecida para minúscula ou maiúscula, dependendo do operador. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim1 string A reivindicação a ser alterada.
InputParameter toCaso string Um dos seguintes valores: LOWER ou UPPER.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada.

Exemplo de ChangeCase

A transformação de declaração a seguir altera a declaração de e-mail para 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:
    • E-mail: SomeOne@contoso.com
  • Parâmetros de entrada:
    • toCase: INFERIOR
  • Declarações de saída:
    • E-mail: someone@contoso.com

CompareClaims

Determina se uma declaração de cadeia de caracteres é igual a outra. O resultado é uma nova reivindicação booleana com um valor de true ou false. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim1 string Primeiro tipo de reivindicação, que deve ser comparado.
InputClaim inputClaim2 string Segundo tipo de alegação, que deve ser comparado.
InputParameter operador string Valores possíveis: EQUAL ou NOT EQUAL.
InputParameter ignorarCaso string Especifica se essa comparação deve ignorar o caso das cadeias de caracteres que estão sendo comparadas.
OutputClaim outputClaim boolean A alegação que é produzida após essa transformação de reivindicações foi invocada.

Exemplo de CompareClaims

Use essa transformação de declarações para verificar se uma reivindicação é igual a outra declaração. A transformação de declarações a seguir verifica se o valor da declaração de e-mail é idêntico ao Verified.Email declaração.

<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: verdadeiro
  • Declarações de saída:
    • outputClaim: verdadeiro

CompareClaimToValue

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

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim1 string O tipo de crédito, que deve 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 ignorarCaso string Especifica se essa comparação deve ignorar o caso das cadeias de caracteres que estão sendo comparadas.
OutputClaim outputClaim boolean A alegação que é produzida após essa transformação de reivindicações foi invocada.

Exemplo de CompareClaimToValue

Use essa transformação de declarações para verificar se uma declaração é igual a um valor especificado. Por exemplo, a transformação de declarações a seguir 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: verdadeiro
  • Declarações de saída:
    • outputClaim: verdadeiro

CopyClaimIfPredicateMatch

Copia o valor de uma declaração para outra se o valor da declaração de entrada corresponder ao predicado da declaração de saída. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string O tipo de reivindicação, que deve ser copiado.
OutputClaim outputClaim string O tipo de declaração que é produzido após essa transformação de declarações ter sido invocada. O valor da reivindicação de entrada é verificado em relação a este predicado de reivindicaçã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, número de telefone. Para obter o exemplo completo, consulte Número de telefone ou política do pacote inicial de entrada por e-mail.

<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 em relação ao seu valor original.

Exemplo de CopyClaimIfPredicateMatch que muito o 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 é posteriormente armazenado na conta do usuário do Azure AD B2C e compartilhado com o aplicativo Microsoft Authenticator. O aplicativo autenticador usa a chave para gerar códigos TOTP quando o usuário precisa passar pelo MFA. Sua política usa a chave para validar o código TOTP fornecido pelo usuário.

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
OutputClaim outputClaim string A declaração que é produzida após essa transformação de declarações foi invocada, 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úmeros aleatórios. Se o gerador de números aleatórios for do tipo integer, opcionalmente pode ser fornecido um parâmetro semente e um número máximo. Um parâmetro de formato de cadeia de caracteres opcional permite que a saída seja formatada usando-o, e um parâmetro base64 opcional especifica se a saída é base64 codificada randomGeneratorType [guid, inteiro] outputClaim (String).

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputParameter randomGeneratorType string Especifica o valor aleatório a ser gerado, GUID (ID exclusivo global) ou INTEGER (um número).
InputParameter stringFormat string [Opcional] Formate o valor aleatório.
InputParameter base64 boolean [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 para base64.
InputParameter número máximo número inteiro [Opcional] Apenas para INTEGER randomGeneratorType. Especifique o número máximo.
InputParameter sementes número inteiro [Opcional] Apenas para INTEGER randomGeneratorType. Especifique a semente para o valor aleatório. Nota: a mesma semente produz a mesma sequência de números aleatórios.
OutputClaim outputClaim string As declarações que serão produzidas após esta transformação de reivindicações ter sido invocada. O valor aleatório.

Exemplo de CreateRandomString

O exemplo a seguir gera um ID global exclusivo. Essa transformação de declarações é usada para criar o UPN aleatório (nome do princípio do usuá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 a criar um valor numérico

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

<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: INTEIRO
    • Número máximo: 1000
    • stringFormat: OTP_{0}
    • base64: falso
  • Declarações de saída:
    • outputClaim: OTP_853

CreateStringClaim

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

Elemento TransformationClaimType Tipo de Dados Notas
InputParameter valor string A cadeia de caracteres a ser definida. Este parâmetro de entrada suporta expressões de transformação de declarações de cadeia de caracteres.
OutputClaim createdClaim string A declaração que é produzida após essa transformação de declarações ter sido invocada, 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 os "Termos de serviço da Contoso..." valor.

FormatLocalizedString

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

Elemento TransformationClaimType Tipo de Dados Notas
InputClaims string A coleção de declarações de entrada que atua como formato {0}de cadeia de caracteres , {1}, {2} parâmetros.
InputParameter stringFormatId string O StringId de uma cadeia de caracteres localizada.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada.

Nota

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 perfil técnico autodeclarado.
  2. O ElementType do elemento deve LocalizedString ser definido como FormatLocalizedStringTransformationClaimType.
  3. O StringId é um identificador exclusivo que você define e o usa posteriormente na transformação stringFormatIdde declarações.
  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 para o StringId do elemento string localizado.
  5. Em um perfil técnico autodeclarado, ou em uma transformação de declarações de entrada ou saída de controle de exibição, faça uma referência à sua 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 para 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 e-mail do usuário incorporado no ResponseMessge_EmailExists de picada localizado.

<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 e-mail '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 dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string A declaração que atua como parâmetro de formato {0} de cadeia de caracteres.
InputParameter stringFormat string O formato da cadeia de caracteres, incluindo o {0} parâmetro. Este parâmetro de entrada suporta expressões de transformação de declarações de cadeia de caracteres.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada.

Nota

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 o 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 dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim1 string A declaração que atua como parâmetro de formato {0} de cadeia de caracteres.
InputClaim inputClaim2 string A declaração que atua como parâmetro de formato {1} de cadeia de caracteres.
InputParameter stringFormat string O formato da cadeia de caracteres, incluindo os {0} parâmetros e {1} . Este parâmetro de entrada suporta expressões de transformação de declarações de cadeia de caracteres.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada.

Nota

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 dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
OutputClaim O nome da cadeia de caracteres localizada string Lista de tipos de declaração que são produzidos após essa transformação de declarações ter sido invocada.

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

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

  2. O ElementType do elemento deve LocalizedString ser definido como GetLocalizedStringsTransformationClaimType.

  3. O StringId é um identificador exclusivo que você define e o usa posteriormente na 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 LocalizedString elemento .

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

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

    <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:

O diagrama mostra como usar a transformação de declarações get localized strings.

Exemplo de GetLocalizedStringsTransformation

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

Defina cadeias de caracteres localizadas para 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ções define o valor do tipo de declaração sujeito com o valor do 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:
    • assunto: Código de verificação de email da conta Contoso
    • mensagem: Obrigado por verificar sua conta!
    • codeIntro: Seu código é
    • assinatura: Atenciosamente

GetMappedValueFromLocalizedCollection

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

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim mapFromClaim string A declaração que contém o texto a ser pesquisado nas declarações restrictionValueClaim com a coleção Restriction .
OutputClaim restrictionValueClaim string A declaração que contém a coleção Restriction . Depois que a transformação de declarações tiver sido 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 para serem enviadas à 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 estiver localizada usando <LocalizedCollection>, a transformação de declarações retornará 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 pode iniciar sessão porque é menor de idade.

LookupValue

Procura um valor de declaração a partir de uma lista de valores com base no valor de outra declaração. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputParameterId string A declaração que contém o valor de pesquisa
InputParameter string Coleção de inputParameters.
InputParameter errorOnFailedLookup boolean Controlando se um erro é retornado quando nenhuma pesquisa correspondente.
OutputClaim outputClaim string A reivindicação que será produzida após essa transformação de reivindicações ter sido invocada. O valor da correspondência Id.

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 (um 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 errorOnFailedLookup o parâmetro input é definido como true, a transformação de declarações 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 LookupNotFound metadados de um perfil técnico autodeclarado controlam a mensagem de erro que é apresentada ao usuário.

O diagrama mostra como usar a transformação de declarações de valor de pesquisa.

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) ou gera 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: verdadeiro
  • Erro:
    • Nenhuma correspondência encontrada para o valor da declaração de entrada na lista de IDs de parâmetro de entrada e errorOnFailedLookup é verdadeira.

NullClaim

Limpa o valor de uma determinada declaração. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
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 pacote de propriedades de declarações para que o cookie de sessão seja menor. O exemplo a seguir remove o valor do tipo de TermsOfService declaração.

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

ParseDomain

Obtém a parte do domínio de um endereço de e-mail. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim endereço de e-mail string A declaração que contém o endereço de e-mail.
OutputClaim domínio string A declaração que é produzida após esta transformação de declarações foi invocada - o domínio.

Exemplo de ParseDomain

Use essa transformação de declarações para analisar o nome de domínio após o 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:
    • endereço de e-mail:joe@outlook.com
  • Declarações de saída:
    • domínio: outlook.com

SetClaimIfBooleansMatch

Verifica se uma reivindicação booleana é true, ou false. Se sim, define as declarações de saída com o valor presente no outputClaimIfMatched parâmetro de entrada. Confira a demonstração ao vivo dessa transformação de reivindicações.

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

Exemplo de SetClaimIfBooleansMatch

Por exemplo, a transformação de declarações a seguir verifica se o valor da declaração hasPromotionCode é igual a true. Se sim, devolva o valor para Código promocional 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: verdadeiro
  • Parâmetros de entrada:
    • matchTo: verdadeiro
    • outputClaimIfMatched: "Código promocional não encontrado."
  • Declarações de saída:
    • outputClaim: "Código promocional não encontrado."

SetClaimsIfRegexMatch

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

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
inputClaim claimToMatch string O tipo de sinistro, que deve ser comparado.
InputParameter matchTo string A expressão regular a ser correspondida.
InputParameter outputClaimIfMatched string O valor a ser definido se as cadeias de caracteres forem iguais.
InputParameter extractGroups boolean [Opcional] Especifica se a correspondência Regex deve extrair valores de grupos. Valores possíveis: true, ou false (padrão).
OutputClaim outputClaim string Se a expressão regular for correspondente, essa declaração de saída conterá o valor do parâmetro de outputClaimIfMatched entrada. Ou nulo, se não houver correspondência.
OutputClaim regexCompareResultClaim boolean A expressão regular corresponde ao tipo de declaração de saída de resultado, que deve ser definida como true ou false com base no resultado da correspondência.
OutputClaim O nome da reivindicação string Se o parâmetro de entrada extractGroups definido como true, lista os tipos de declaração que sã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 do 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: "Telefone"
  • Declarações de saída:
    • outputClaim: "iPhone"
    • regexCompareResultClaim: verdadeiro

Exemplo de SetClaimsIfRegexMatch com grupos de extração

Verifica se o endereço de e-mail fornecido é válido e retorna o alias de e-mail. Confira a demonstração ao vivo desta transformação de reivindicaçõ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: verdadeiro
  • Declarações de saída:
    • outputClaim: "isEmail"
    • regexCompareResultClaim: verdadeiro
    • mailAlias: emily

SetClaimsIfStringsAreEqual

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

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string O tipo de sinistro, que deve ser comparado.
InputParameter matchTo string A cadeia de caracteres a ser comparada com inputClaim.
InputParameter stringComparação 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 stringMatchMsg entrada.
OutputClaim outputClaim2 string Se as cadeias de caracteres forem iguais, essa declaração de saída conterá o valor do parâmetro de stringMatchMsgCode entrada.
OutputClaim stringCompareResultClaim boolean O tipo de declaração de saída de resultado de comparação, que deve ser definido como true ou false com base no resultado da comparação.

Exemplo de SetClaimsIfStringsAreEqual

Você pode usar essa transformação de declarações para verificar se uma declaração é igual ao valor especificado. Por exemplo, a transformação de declarações a seguir verifica se o valor da declaração termsOfUseConsentVersion é igual a v1. Se sim, altere o valor 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: verdadeiro

SetClaimsIfStringsMatch

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

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim claimToMatch string O tipo de sinistro, que deve ser comparado.
InputParameter matchTo string A cadeia de caracteres a ser comparada com inputClaim.
InputParameter stringComparação 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 outputClaimIfMatched entrada. Ou null, se as cadeias de caracteres não corresponderem.
OutputClaim stringCompareResultClaim boolean O tipo de declaração de saída de 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 transformação de declarações a seguir verifica se o valor da declaração ageGroup é igual a Minor. Se sim, 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: Menor
  • Parâmetros de entrada:
    • matchTo: Menor
    • stringComparison: ordinalIgnoreCase
    • outputClaimIfMatched: B2C_V1_90001
  • Declarações de saída:
    • isMinorResponseCode: verdadeiro
    • isMinor: B2C_V1_90001

StringContains

Determina se uma substring especificada ocorre dentro da declaração de entrada. O resultado é uma nova reivindicação booleana com um valor de true ou false. true se o parâmetro value ocorrer dentro dessa cadeia de caracteres, caso contrário, false.

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string O tipo de reivindicação, que deve ser pesquisado.
InputParameter contém string O valor a pesquisar.
InputParameter ignorarCaso string Especifica se essa comparação deve ignorar o caso da cadeia de caracteres que está sendo comparada.
OutputClaim outputClaim string A alegação que é produzida após essa transformação de reivindicações foi invocada. Um indicador booleano se a substring ocorrer dentro da declaração de entrada.

Exemplo de StringContains

Use essa transformação de declarações para verificar se um tipo de declaração de cadeia de caracteres contém uma substring. O exemplo a seguir, verifica se o roles tipo de declaração de cadeia de caracteres 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: "Administrador, Aprovador, Editor"
  • Parâmetros de entrada:
    • contém: "admin,"
    • ignoreCase: verdadeiro
  • Declarações de saída:
    • outputClaim: verdadeiro

StringSubstring

Extrai partes de um tipo de declaração de cadeia de caracteres, começando no caractere na posição especificada, e retorna o número especificado de caracteres. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string O tipo de declaração, que contém a cadeia de caracteres.
InputParameter startIndex número inteiro A posição de caractere inicial baseada em zero de uma substring neste caso.
InputParameter length número inteiro O número de caracteres na substring.
OutputClaim outputClaim string Uma cadeia de caracteres que é equivalente à substring de length que começa em startIndex nesta instância, ou Empty se startIndex for igual ao comprimento desta instância e length for zero.

Exemplo de StringSubstring

Por exemplo, obtenha o prefixo do país/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 de tipo de declaração para um valor especificado e retorna uma nova cadeia de caracteres de tipo de declaração na qual todas as ocorrências de uma cadeia de caracteres especificada na cadeia de caracteres atual são substituídas por outra cadeia de caracteres especificada.

Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
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 novoValor string A cadeia de caracteres para substituir todas as ocorrências de oldValue
OutputClaim outputClaim boolean Uma cadeia de caracteres que é equivalente à cadeia de caracteres atual, exceto que todas as instâncias de oldValue são 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 dessa transformação de reivindicações.

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

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 delimitadora de vírgula. Você pode usar esse método para armazenar uma coleção de cadeias de caracteres em uma conta de usuário do Azure AD B2C. Mais tarde, quando você ler a conta do diretório, use o para converter a cadeia de caracteres do delimitador de vírgula StringSplit de volta para a coleção de cadeias 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:
    • delimitador: ","
  • Declarações de saída:
    • outputClaim: "Admin,Author,Reader"

StringSplit

Retorna uma matriz de cadeia de caracteres que contém as substrings nesta instância que são delimitadas por elementos de uma cadeia de caracteres especificada. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de Dados Notas
InputClaim inputClaim string Um tipo de declaração de cadeia de caracteres que contém as subcadeias de caracteres a serem divididas.
InputParameter delimitador 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 subcadeias de caracteres nessa cadeia de caracteres que são delimitadas pelo delimiter parâmetro input.

Nota

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

Exemplo de StringSplit

O exemplo a seguir usa uma cadeia de caracteres de delimitador de vírgulas de funções de usuário e a converte em uma coleção de cadeias 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:
    • delimitador: ","
  • Declarações de saída:
    • outputClaim: [ "Admin", "Author", "Reader" ]

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

As 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 técnico profileId. 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 da estrutura de confiança. your-tenant.onmicrosoft.com

Próximos passos

  • Encontre mais exemplos de transformação de declarações no repositório GitHub da comunidade do Azure AD B2C