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.
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}
- esquema:
- Declarações de saída:
- outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
- outputClaim:
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
- outputClaim:
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:
- Defina uma cadeia de caracteres de localização e associe-a a um self-asserted-technical-profile.
- O
ElementType
do elementoLocalizedString
precisa ser configurado comoFormatLocalizedStringTransformationClaimType
. - O
StringId
é um identificador exclusivo que você define e usa mais tarde na sua transformação de declaraçõesstringFormatId
. - 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 oStringId
do elemento da cadeia de caracteres localizada. - 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:
Defina uma cadeia de caracteres de localização para asua definição de conteúdo, como
api.selfasserted
.O
ElementType
do elementoLocalizedString
precisa ser configurado comoGetLocalizedStringsTransformationClaimType
.O
StringId
é um identificador exclusivo que você define e usa mais tarde na sua transformação de declarações.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. OTransformationClaimType
é o nome da cadeia de caracteres localizada, conforme definido noStringId
do elementoLocalizedString
.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.
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údoapi.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:
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.
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="(?<mailAlias>.*)@(.*)$" />
<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:
(?<mailAlias>.*)@(.*)$
- outputClaimIfMatched: "isEmail"
- extractGroups: true
- matchTo:
- 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" ]
- inputClaim:
- Parâmetros de entrada:
- delimiter: ","
- Declarações de saída:
- outputClaim:
"Admin,Author,Reader"
- outputClaim:
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
- inputClaim:
- Parâmetros de entrada:
- delimiter: ","
- Declarações de saída:
- outputClaim:
[ "Admin", "Author", "Reader" ]
- outputClaim:
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
- Encontre mais amostras de transformação de declarações no repositório GitHub da comunidade do Azure AD B2C