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.
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}
- esquema:
- Declarações de saída:
- outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
- outputClaim:
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
- outputClaim:
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:
- Defina uma cadeia de caracteres de localização e associe-a a um perfil técnico autodeclarado.
- O
ElementType
do elemento deveLocalizedString
ser definido comoFormatLocalizedStringTransformationClaimType
. - O
StringId
é um identificador exclusivo que você define e o usa posteriormente na transformaçãostringFormatId
de declarações. - 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 oStringId
do elemento string localizado. - 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:
Defina uma cadeia de caracteres de localização para sua definição de conteúdo, como
api.selfasserted
.O
ElementType
do elemento deveLocalizedString
ser definido comoGetLocalizedStringsTransformationClaimType
.O
StringId
é um identificador exclusivo que você define e o usa posteriormente na 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
doLocalizedString
elemento .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.
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 deapi.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:
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 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="(?<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: verdadeiro
- matchTo:
- 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" ]
- inputClaim:
- Parâmetros de entrada:
- delimitador: ","
- Declarações de saída:
- outputClaim:
"Admin,Author,Reader"
- outputClaim:
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
- inputClaim:
- Parâmetros de entrada:
- delimitador: ","
- Declarações de saída:
- outputClaim:
[ "Admin", "Author", "Reader" ]
- outputClaim:
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