Compartir a través de


Transformaciones de notificaciones de cadena

En este artículo se proporcionan ejemplos para usar las transformaciones de notificaciones de cadena del esquema de Identity Experience Framework en Azure Active Directory B2C (Azure AD B2C). Para más información, consulte Transformaciones de notificaciones.

AssertStringClaimsAreEqual

Compara dos notificaciones y emitir una excepción si no son iguales según la comparación especificada inputClaim1, inputClaim2 y stringComparison.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim1 string Tipo de la primera notificación, que se va a comparar.
InputClaim inputClaim2 string Tipo de la segunda notificación, que se va a comparar.
InputParameter stringComparison string comparación de cadenas, uno de los valores: Ordinal, OrdinalIgnoreCase.

La transformación de notificaciones AssertStringClaimsAreEqual siempre se ejecuta desde un perfil técnico de validación llamado por un perfil técnico autoafirmado o un elemento DisplayControl. Los metadatos UserMessageIfClaimsTransformationStringsAreNotEqual de un perfil técnico autoafirmado controlan el mensaje de error que se presenta al usuario. Los mensajes de error se pueden localizar.

El diagrama muestra cómo usar la transformación de notificaciones assert string claims are equal.

Ejemplo de AssertStringClaimsAreEqual

Puede usar esta transformación de notificaciones para asegurarse de que dos notificaciones tienen el mismo valor. Si no es así, se emite un mensaje de error. En el ejemplo siguiente se comprueba que la notificación strongAuthenticationEmailAddress se igual que la notificación email. De lo contrario, se emite un mensaje de error.

<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>
  • Notificaciones de entrada:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • Parámetros de entrada:
    • stringComparison: ordinalIgnoreCase
  • Resultado: aparece un error

Llamada a la transformación de notificaciones AssertStringClaimsAreEqual

El perfil técnico de validación login-NonInteractive llama a la transformación de notificaciones AssertEmailAndStrongAuthenticationEmailAddressAreEqual.

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

El perfil técnico autoafirmado llama al perfil técnico login-NonInteractive de validación.

<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

Crea una hora basada en el URI de contraseña de hora (TOTP). El URI es una combinación del identificador único del usuario, como la dirección de correo electrónico y una clave secreta. El URI se convierte posteriormente en un código QR que se presenta al usuario. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim path string Identificador único del usuario, como la dirección de correo electrónico, el nombre de usuario o el número de teléfono.
InputClaim query.secret string Clave secreta TOTP.
InputParameter scheme string Parte del esquema del URI. Por ejemplo, otpauth.
InputParameter host string Parte del esquema del URI. Por ejemplo, totp.
InputParameter query.issuer string Parte del emisor del URI. Por ejemplo, {AuthenticatorIssuer}.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de BuildUri

La siguiente transformación de notificaciones genera un URI de TOTP que se mostrará en el código QR o el vínculo 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>
  • Notificaciones de entrada:
    • ruta de acceso: emily@fabrikam.com
    • query.secret: fay2lj7ynpntjgqa
  • Parámetros de entrada:
    • esquema: otpauth
    • host: totp
    • query.issuer: {AuthenticatorIssuer}
  • Notificaciones de salida:
    • outputClaim: otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo

ChangeCase

Cambia el uso de mayúsculas y minúsculas en la notificación proporcionada, dependiendo del operador. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim1 string Notificación que se va a cambiar.
InputParameter toCase string Puede ser uno de los siguientes valores: LOWER o UPPER.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de ChangeCase

La siguiente transformación de notificación cambia la notificación de correo electrónico a 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>
  • Notificaciones de entrada:
    • email: SomeOne@contoso.com
  • Parámetros de entrada:
    • toCase: LOWER
  • Notificaciones de salida:
    • email: someone@contoso.com

CompareClaims

Determine si una notificación de cadena es igual a otra. El resultado es una nueva notificación booleana con un valor de true o false. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim1 string Tipo de la primera notificación, que se va a comparar.
InputClaim inputClaim2 string Tipo de la segunda notificación, que se va a comparar.
InputParameter operator string Valores posibles: EQUAL o NOT EQUAL.
InputParameter ignoreCase string Especifica si la comparación distingue entre mayúsculas y minúsculas en las cadenas que se están comparando.
OutputClaim outputClaim boolean Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de CompareClaims

Use esta transformación de notificaciones para comprobar si una notificación es igual a otra notificación. La siguiente transformación de notificaciones comprueba si el valor de la notificación email es igual al de la notificación 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>
  • Notificaciones de entrada:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • Parámetros de entrada:
    • operator: NOT EQUAL
    • ignoreCase: true
  • Notificaciones de salida:
    • outputClaim: true

CompareClaimToValue

Determina si un valor de notificación es igual al valor del parámetro de entrada. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim1 string Tipo de la notificación, que se va a comparar.
InputParameter operator string Valores posibles: EQUAL o NOT EQUAL.
InputParameter compareTo string Comparación de cadenas, uno de los valores, es decir, la cadena a la que se deben comparar los valores de la notificación de entrada con: Ordinal, OrdinalIgnoreCase.
InputParameter ignoreCase string Especifica si la comparación distingue entre mayúsculas y minúsculas en las cadenas que se están comparando.
OutputClaim outputClaim boolean Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de CompareClaimToValue

Use esta transformación de notificaciones para comprobar si una notificación es igual a un valor que haya especificado. Por ejemplo, la siguiente transformación de notificaciones comprueba si el valor de la notificación termsOfUseConsentVersion es 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>
  • Notificaciones de entrada:
    • inputClaim1: v1
  • Parámetros de entrada:
    • compareTo: V2
    • operator: NOT EQUAL
    • ignoreCase: true
  • Notificaciones de salida:
    • outputClaim: true

CopyClaimIfPredicateMatch

Copia el valor de una notificación en otra si el valor de la notificación de entrada coincide con el predicado de la notificación de salida. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de la notificación que se va a copiar.
OutputClaim outputClaim string El tipo de notificación que se genera después de que se haya invocado esta transformación de notificaciones. El valor de la notificación de entrada se comprueba con este predicado de notificación.

Ejemplo de CopyClaimIfPredicateMatch

En el ejemplo siguiente se intenta copiar el valor de la notificación signInName en la notificación phoneNumber. En este ejemplo, el valor no se copiará. La notificación signInName no tiene el formato esperado: número de teléfono. Para ver el ejemplo completo, consulte la directiva del módulo Inicio de sesión con número de teléfono o correo electrónico.

<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • inputClaim: bob@contoso.com
  • Notificaciones de salida:
    • outputClaim: la notificación de salida no se cambiará de su valor original.

Ejemplo de CopyClaimIfPredicateMatch que ajusta el predicado

En este ejemplo, la transformación de notificaciones copiará el valor. La notificación signInName tiene el formato correcto: número de teléfono.

  • Notificaciones de entrada:
    • inputClaim: +11234567890
  • Notificaciones de salida:
    • outputClaim: +11234567890

CreateOtpSecret

Crea una notificación de cadena TOTP. La salida de esta transformación de notificaciones es un secreto TOTP que se almacena posteriormente en la cuenta de usuario de Azure AD B2C y se comparte con la aplicación Microsoft Authenticator. La aplicación autenticadora usa la clave para generar códigos TOTP cuando el usuario necesita para superar la MFA. La directiva usa la clave para validar el código TOTP proporcionado por el usuario.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
OutputClaim outputClaim string La notificación que se genera después de que se haya invocado esta transformación de notificaciones con el código TOPT generado.

Ejemplo de CreateOtpSecret

La siguiente transformación de notificaciones para crear un secreto para el autenticador multifactor de TOTP.

<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de salida:
    • outputClaim: hmlcmd4ph6fph64c

CreateRandomString

Crea una cadena aleatoria mediante el generador de números aleatorios. Si el generador de números aleatorios es de tipo integer, opcionalmente se pueden proporcionar un parámetro de inicialización y un número máximo. Un parámetro de formato de cadena opcional permite que la salida tenga ese formato, y un parámetro de base64 opcional especifica si la salida randomGeneratorType [guid, integer] outputClaim (String) está codificada en base64 .

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputParameter randomGeneratorType string Especifica el valor aleatorio que se genera, GUID (identificador único global) o INTEGER (un número).
InputParameter stringFormat string [Opcional] Formato del valor aleatorio.
InputParameter base64 boolean [Opcional] Convertir el valor aleatorio en base64. Si se aplica el formato de cadena, el valor después del formato de cadena está codificado en base64.
InputParameter maximumNumber int [Opcional] Solo para randomGeneratorType INTEGER. Especifique el número máximo.
InputParameter seed int [Opcional] Solo para randomGeneratorType INTEGER. Especifique el valor de inicialización del valor aleatorio. Nota: El mismo valor de inicialización genera la misma secuencia de números aleatorios.
OutputClaim outputClaim string Las notificaciones que se genera después de que se haya invocado esta transformación de notificaciones. El valor aleatorio.

Ejemplo de CreateRandomString

El ejemplo siguiente genera un identificador único global. Esta transformación de notificaciones se usa para crear el UPN (nombre principal del usuario) aleatorio.

<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
  • Notificaciones de salida:
    • outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc

Ejemplo de CreateRandomString para crear un valor numérico

El ejemplo siguiente genera un valor entero aleatorio entre 0 y 1000. El valor pasa a tener el formato OTP_ {valor_aleatorio}.

<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
  • Notificaciones de salida:
    • outputClaim: OTP_853

CreateStringClaim

Crea una notificación de cadena a partir del parámetro de entrada proporcionado en la transformación. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputParameter value string La cadena que va a establecerse. Este parámetro de entrada admite expresiones de transformación de notificaciones de cadena.
OutputClaim createdClaim string La notificación que se genera después de que se haya invocado esta transformación de notificaciones, con el valor especificado en el parámetro de entrada.

Ejemplo de CreateStringClaim

La siguiente transformación de notificaciones crea un valor de cadena con términos de servicio.

<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: Contoso terms of service...
  • Notificaciones de salida:
    • createdClaim: La notificación TOS contiene el valor "Contoso terms of service…".

FormatLocalizedString

Aplica formato a varias notificaciones de acuerdo con una cadena de formato localizada proporcionada. Esta transformación usa el método String.Format de C#. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaims string La colección de notificaciones de entrada que actúa como parámetros de formato de cadena {0}, {1}, {2}.
InputParameter stringFormatId string El valor StringId de una cadena localizada.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Nota:

No existe ningún límite en el número de notificaciones de entrada que se pueden especificar, pero la longitud máxima de la cadena con formato es 4000.

Para usar la transformación de notificaciones FormatLocalizedString:

  1. Defina una cadena de localización y asóciela con un perfil técnico autoafirmado.
  2. El ElementType del elemento LocalizedString debe establecerse en FormatLocalizedStringTransformationClaimType.
  3. StringId es un identificador único que se define y se usa más adelante en la transformación de notificaciones stringFormatId.
  4. En la transformación de notificaciones, especifique la lista de notificaciones que se van a establecer con la cadena localizada. A continuación, establezca stringFormatId en el valor StringId del elemento de cadena localizado.
  5. En un perfil técnico autoafirmado o una transformación de notificaciones de entrada o salida de control de visualización, haga una referencia a la transformación de notificaciones.

Ejemplo de FormatLocalizedString

En el ejemplo siguiente se genera un mensaje de error cuando una cuenta ya está en el directorio. En el ejemplo se definen cadenas localizadas para inglés (valor predeterminado) y español.

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

La transformación de notificaciones crea un mensaje de respuesta basado en la cadena localizada. El mensaje contiene la dirección de correo electrónico del usuario insertada en la cadena localizada ResponseMessge_EmailExists.

<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>
  • Notificaciones de entrada:
    • inputClaim: sarah@contoso.com
  • Parámetros de entrada:
    • stringFormat: ResponseMessge_EmailExists
  • Notificaciones de salida:
    • outputClaim: el correo electrónico "sarah@contoso.com" ya es una cuenta de esta organización. Seleccione Siguiente para iniciar sesión con esa cuenta.

FormatStringClaim

Da formato a una notificación de acuerdo con la cadena de formato proporcionada. Esta transformación usa el método String.Format de C#. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string La notificación que actúa como el parámetro {0} de formato de cadena.
InputParameter stringFormat string El formato de cadena, incluido el parámetro {0}. Este parámetro de entrada admite expresiones de transformación de notificaciones de cadena.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Nota:

El formato de cadena máximo permitido es 4000.

Ejemplo de FormatStringClaim

Use esta transformación de notificaciones para dar formato a cualquier cadena con un parámetro {0}. El ejemplo siguiente crea un userPrincipalName. Todos los perfiles técnicos de proveedores de las identidades de redes sociales, como Facebook-OAUTH llaman a CreateUserPrincipalName para generar un 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>
  • Notificaciones de entrada:
    • inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9
  • Parámetros de entrada:
    • stringFormat: cpim_{0}@{RelyingPartyTenantId}
  • Notificaciones de salida:
    • outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com

FormatStringMultipleClaims

Da formato a dos notificaciones de acuerdo con la cadena de formato proporcionada. Esta transformación usa el método String.Format de C#. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim1 string La notificación que actúa como el parámetro {0} de formato de cadena.
InputClaim inputClaim2 string La notificación que actúa como el parámetro {1} de formato de cadena.
InputParameter stringFormat string El formato de cadena, incluidos los parámetros {0} y {1}. Este parámetro de entrada admite expresiones de transformación de notificaciones de cadena.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Nota:

El formato de cadena máximo permitido es 4000.

Ejemplo de FormatStringMultipleClaims

Use esta transformación de notificaciones para dar formato a cualquier cadena con dos parámetros, {0} y {1}. En el ejemplo siguiente se crea un displayName con el 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>
  • Notificaciones de entrada:
    • inputClaim1: Joe
    • inputClaim2: Fernando
  • Parámetros de entrada:
    • stringFormat: {0}{1}
  • Notificaciones de salida:
    • outputClaim: Joe Fernando

GetLocalizedStringsTransformation

Copia las cadenas localizadas en las notificaciones. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
OutputClaim Nombre de la cadena localizada. string Lista de tipos de notificaciones que se genera después de que se haya invocado esta transformación de notificaciones.

Para usar la transformación de notificaciones GetLocalizedStringsTransformation:

  1. Defina una cadena de localización para la definición de contenido, como api.selfasserted.

  2. El ElementType del elemento LocalizedString debe establecerse en GetLocalizedStringsTransformationClaimType.

  3. StringId es un identificador único que se define y se usa más adelante en la transformación de notificaciones.

  4. En la transformación de notificaciones, especifique la lista de notificaciones que se van a establecer con la cadena localizada. ClaimTypeReferenceId es una referencia a una notificación ya definida en la sección ClaimsSchema de la directiva. TransformationClaimType es el nombre de la cadena localizada tal como se define en StringId del elemento LocalizedString.

  5. En una transformación de notificaciones del perfil técnico autoafirmado o de transformación de notificaciones, realice una referencia a su transformación de notificaciones.

  6. Asocie el perfil técnico a la definición de contenido, como api.selfasserted. En el ejemplo siguiente se muestra cómo asociar un perfil técnico a la definición de contenido api.selfasserted.

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

En el diagrama siguiente se muestra cómo configurar la transformación de notificaciones con los elementos de localización:

El diagrama muestra cómo usar la transformación de notificaciones get localized strings.

Ejemplo de GetLocalizedStringsTransformation

En el siguiente ejemplo se busca el asunto, el cuerpo, el mensaje de código y la firma del correo electrónico en las cadenas localizadas. Las notificaciones se usan posteriormente en la plantilla de comprobación de correo electrónico personalizada.

Defina cadenas localizadas para inglés (predeterminado) y español.

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

La transformación de notificaciones establece el valor del tipo de notificación subject con el valor de StringIdemail_subject de .

<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>
  • Notificaciones de salida:
    • subject: Código de verificación del correo electrónico de la cuenta de Contoso
    • message: Gracias por comprobar la cuenta
    • codeIntro: Su código es
    • signature: Atentamente

GetMappedValueFromLocalizedCollection

Asigna un elemento de la colección Restriction de la notificación de entrada. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim mapFromClaim string La notificación que contiene el texto que se va a buscar en las notificaciones restrictionValueClaim con la colección Restriction.
OutputClaim restrictionValueClaim string La notificación que contiene la colección Restriction. Una vez que se ha invocado la transformación de notificaciones, el valor de esta notificación contiene el valor del elemento seleccionado.

Ejemplo de GetMappedValueFromLocalizedCollection

En el ejemplo siguiente se busca la descripción del mensaje de error según la clave de error. La notificación responseMsg contiene una colección de mensajes de error para presentar al usuario final o a enviar al usuario de confianza.

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

La transformación de notificaciones busca el texto del elemento y devuelve su valor. Si la restricción se localiza mediante <LocalizedCollection>, la transformación de notificaciones devuelve el valor localizado.

<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />        
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • mapFromClaim: B2C_V1_90001
  • Notificaciones de salida:
    • restrictionValueClaim: no puede iniciar sesión porque es menor.

LookupValue

Busca un valor de notificación en una lista de valores en función del valor de otra notificación. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputParameterId string La notificación que contiene el valor de búsqueda.
InputParameter string Colección de inputParameters.
InputParameter errorOnFailedLookup boolean Controlar si se devuelve un error cuando una búsqueda no tiene resultados.
OutputClaim outputClaim string La notificación que se genera después de que se haya invocado esta transformación de notificaciones. Valor del Id coincidente.

Ejemplo de LookupValue

En el ejemplo siguiente se busca el nombre de dominio en una de las colecciones inputParameters. La transformación de notificaciones busca el nombre de dominio en el identificador y devuelve su valor (un identificador de aplicación).

 <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>
  • Notificaciones 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
  • Notificaciones de salida:
    • outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9

Ejemplo de LookupValue con error

Cuando el parámetro de entrada errorOnFailedLookup está establecido en true, la transformación de notificaciones LookupValue siempre se ejecuta desde un perfil técnico de validación llamado por un perfil técnico autofirmado o un elemento DisplayControl. Los metadatos LookupNotFound de un perfil técnico autoafirmado controlan el mensaje de error que se presenta al usuario.

El diagrama muestra cómo usar la transformación de notificaciones lookup value.

En el ejemplo siguiente se busca el nombre de dominio en una de las colecciones inputParameters. La transformación de notificaciones busca el nombre de dominio en el identificador y devuelve su valor (un identificador de aplicación), o bien genera un mensaje de error.

 <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>
  • Notificaciones 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
  • Error:
    • No se encontró ninguna coincidencia para el valor de notificaciones de entrada en la lista de identificadores de parámetro de entrada y errorOnFailedLookup es true.

NullClaim

Limpia el valor de una notificación determinada. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
OutputClaim claim_to_null string El valor de la notificación está establecido en NULL.

Ejemplo de NullClaim

Use esta transformación de notificaciones para quitar datos innecesarios de la bolsa de propiedades de notificaciones, para que la cookie de la sesión sea menor. En el ejemplo siguiente se quita el valor del tipo de notificación TermsOfService.

<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
  <OutputClaims>
  <OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • outputClaim: Bienvenidos a Contoso App. Si continúa explorando y usando este sitio web, acepta los siguientes términos y condiciones, que regirán su uso del sitio web...
  • Notificaciones de salida:
    • outputClaim: NULL

ParseDomain

Obtiene la parte de dominio de una dirección de correo electrónico. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim emailAddress string La notificación que contiene la dirección de correo electrónico.
OutputClaim dominio string La notificación que se genera después de que se haya invocado esta transformación de notificaciones: el dominio.

Ejemplo de ParseDomain

Use esta transformación de notificaciones para analizar el nombre de dominio después el símbolo @ del usuario. La siguiente transformación de notificaciones muestra cómo analizar el nombre de dominio desde una notificación de email.

<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • emailAddress: joe@outlook.com
  • Notificaciones de salida:
    • domain: outlook.com

SetClaimIfBooleansMatch

Comprueba que una notificación booleana es true o false. En caso afirmativo, establece las notificaciones de salida con el valor presente en el parámetro de entrada outputClaimIfMatched. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim claimToMatch string Tipo de la notificación que se va a comprobar. Un valor nulo inicia una excepción.
InputParameter matchTo string Valor que se va a comparar con la notificación de entrada claimToMatch. Valores posibles: true o false.
InputParameter outputClaimIfMatched string Valor que se va a establecer si la notificación de entrada es igual al parámetro de entrada matchTo.
OutputClaim outputClaim string Si la notificación de entrada claimToMatch es igual al parámetro de entrada matchTo, esta notificación de salida contiene el valor del parámetro de entrada outputClaimIfMatched.

Ejemplo de SetClaimIfBooleansMatch

Por ejemplo, la siguiente transformación de notificaciones comprueba si el valor de la notificación hasPromotionCode es igual a true. En caso afirmativo, devuelve el valor Promotion code not found.

<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>
  • Notificaciones de entrada:
    • claimToMatch: true
  • Parámetros de entrada:
    • matchTo: true
    • outputClaimIfMatched: "Promotion code not found".
  • Notificaciones de salida:
    • outputClaim: "Promotion code not found."

SetClaimsIfRegexMatch

Comprueba que una notificación de cadena claimToMatch y el parámetro de entrada matchTo son iguales, y establece las notificaciones de salida con el valor presente en el parámetro de entrada outputClaimIfMatched, junto con la notificación de salida del resultado de la comparación, que debe establecerse en true o false según el resultado de la comparación.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
inputClaim claimToMatch string Tipo de la notificación que se va a comparar.
InputParameter matchTo string La expresión regular con la que debe coincidir.
InputParameter outputClaimIfMatched string Valor que debe establecerse si las cadenas son iguales.
InputParameter extractGroups boolean [Opcional] Especifica si la coincidencia de Regex debe extraer los valores de los grupos. Valores posibles: true o false (valor predeterminado).
OutputClaim outputClaim string Si la expresión regular coincide, esta notificación de salida contiene el valor del parámetro de entrada outputClaimIfMatched. Si no hay coincidencia, el valor es NULL.
OutputClaim regexCompareResultClaim boolean Tipo de la notificación de salida del resultado de la coincidencia de la expresión regular, que debe establecerse en true o false en función del resultado de la coincidencia.
OutputClaim El nombre de la notificación string Si el parámetro de entrada extractGroups se establece en true, la lista de tipos de notificación que se produce después de que se haya invocado esta transformación de notificaciones. El nombre de la notificación debe coincidir con el nombre del grupo Regex.

Ejemplo de SetClaimsIfRegexMatch

Comprueba si el número de teléfono indicado es válido, en función del patrón de expresión regular de número de teléfono.

<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>
  • Notificaciones de entrada:
    • claimToMatch: "64854114520"
  • Parámetros de entrada:
    • matchTo: "^[0-9]{4,16}$"
    • outputClaimIfMatched: "Phone"
  • Notificaciones de salida:
    • outputClaim: "iPhone"
    • regexCompareResultClaim: true

Ejemplo de SetClaimsIfRegexMatch con grupos de extracción

Comprueba si la dirección de correo electrónico proporcionada es válida y devuelve el alias de correo electrónico. Consulte la demo en vivo de esta transformación de notificaciones con grupos de extracción.

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

SetClaimsIfStringsAreEqual

Comprueba que una notificación de cadena y el parámetro de entrada matchTo son iguales, y establece las notificaciones de salida con el valor presente en los parámetros de entrada stringMatchMsg y stringMatchMsgCode, junto con la notificación de salida del resultado de la comparación, que debe establecerse en true o false según el resultado de la comparación.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de la notificación que se va a comparar.
InputParameter matchTo string Cadena que se va a comparar con inputClaim.
InputParameter stringComparison string Valores posibles: Ordinal o OrdinalIgnoreCase.
InputParameter stringMatchMsg string Primer valor que debe establecerse si las cadenas son iguales.
InputParameter stringMatchMsgCode string Segundo valor que debe establecerse si las cadenas son iguales.
OutputClaim outputClaim1 string Si las cadenas son iguales, esta notificación de salida contiene el valor del parámetro de entrada stringMatchMsg.
OutputClaim outputClaim2 string Si las cadenas son iguales, esta notificación de salida contiene el valor del parámetro de entrada stringMatchMsgCode.
OutputClaim stringCompareResultClaim boolean Tipo de la notificación de salida del resultado de la comparación, que debe establecerse en true o false en función del resultado de la comparación.

Ejemplo de SetClaimsIfStringsAreEqual

Puede usar esta transformación de notificaciones para comprobar si una notificación es igual a un valor que haya especificado. Por ejemplo, la siguiente transformación de notificaciones comprueba si el valor de la notificación termsOfUseConsentVersion es igual a v1. En caso afirmativo, cambie el valor a 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>
  • Notificaciones de entrada:
    • inputClaim: v1
  • Parámetros de entrada:
    • matchTo: V1
    • stringComparison: ordinalIgnoreCase
    • stringMatchMsgCode: B2C_V1_90005
    • stringMatchMsg: La notificación TOS se actualiza a la versión 2
  • Notificaciones de salida:
    • outputClaim1: B2C_V1_90005
    • outputClaim2: The TOS is upgraded to v2
    • stringCompareResultClaim: true

SetClaimsIfStringsMatch

Comprueba que una notificación de cadena y el parámetro de entrada matchTo son iguales, y establece las notificaciones de salida con el valor presente en el parámetro de entrada outputClaimIfMatched, junto con la notificación de salida del resultado de la comparación, que debe establecerse en true o false según el resultado de la comparación.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim claimToMatch string Tipo de la notificación que se va a comparar.
InputParameter matchTo string Cadena que se va a comparar con inputClaim.
InputParameter stringComparison string Valores posibles: Ordinal o OrdinalIgnoreCase.
InputParameter outputClaimIfMatched string Valor que debe establecerse si las cadenas son iguales.
OutputClaim outputClaim string Si las cadenas son iguales, esta notificación de salida contiene el valor del parámetro de entrada outputClaimIfMatched. O null, si las cadenas no coinciden.
OutputClaim stringCompareResultClaim boolean Tipo de la notificación de salida del resultado de la comparación, que debe establecerse en true o false en función del resultado de la comparación.

Ejemplo de SetClaimsIfStringsMatch

Por ejemplo, la siguiente transformación de notificaciones comprueba si el valor de la notificación ageGroup es igual a Minor. En caso afirmativo, devuelve el 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>
  • Notificaciones de entrada:
    • claimToMatch: Minor
  • Parámetros de entrada:
    • matchTo: Minor
    • stringComparison: ordinalIgnoreCase
    • outputClaimIfMatched: B2C_V1_90001
  • Notificaciones de salida:
    • isMinorResponseCode: true
    • isMinor: B2C_V1_90001

StringContains

Determina si una subcadena especificada aparece dentro de la notificación de entrada. El resultado es una nueva notificación booleana con un valor de true o false. true si el parámetro de valor aparece dentro de esta cadena; en caso contrario, false.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de la notificación que se va a buscar.
InputParameter contains string Valor que se va a buscar.
InputParameter ignoreCase string Especifica si la comparación distingue entre mayúsculas y minúsculas en las cadenas que se están comparando.
OutputClaim outputClaim string Notificación que se genera después de que se haya invocado esta transformación de notificaciones. Indicador booleano si la subcadena aparece dentro de la notificación de entrada.

Ejemplo de StringContains

Use esta transformación de notificaciones para comprobar si un tipo de notificación de cadena contiene una subcadena. En el siguiente ejemplo se comprueba si el tipo de notificación de cadena roles contiene el valor 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>
  • Notificaciones de entrada:
    • inputClaim: "Admin, Approver, Editor"
  • Parámetros de entrada:
    • contains: "admin,"
    • ignoreCase: true
  • Notificaciones de salida:
    • outputClaim: true

StringSubstring

Extrae partes de un tipo de notificación de cadena, comenzando por el carácter que se encuentra en la posición especificada, y devuelve el número de caracteres especificado. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de notificación que contiene la cadena.
InputParameter startIndex int Posición de carácter inicial de base cero de una subcadena en la instancia.
InputParameter length int Número de caracteres de la subcadena.
OutputClaim outputClaim string Cadena equivalente a la subcadena de longitud que comienza en el valor de startIndex de esta instancia, o bien, un valor vacío si el valor de startIndex es igual a la longitud de esta instancia y length es cero.

Ejemplo de StringSubstring

Por ejemplo, obtiene el prefijo de país o región del número de teléfono.

<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>
  • Notificaciones de entrada:
    • inputClaim: "+1644114520"
  • Parámetros de entrada:
    • startIndex: 0
    • length: 2
  • Notificaciones de salida:
    • outputClaim: "+1"

StringReplace

Busca un valor especificado en una notificación de tipo cadena y devuelve una nueva notificación de tipo cadena en la que todas las apariciones de una cadena especificada en la cadena actual se reemplazan por otra cadena especificada.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de notificación que contiene la cadena.
InputParameter oldValue string Cadena que se va a buscar.
InputParameter newValue string Cadena que va a reemplazar todas las apariciones de oldValue.
OutputClaim outputClaim boolean Cadena que es equivalente a la cadena actual salvo en que todas las instancias de oldValue se reemplazan por el valor de newValue. Si no se encuentra el valor de oldValue en la instancia actual, el método devuelve la instancia actual sin modificar.

Ejemplo de StringReplace

Por ejemplo, normaliza un número de teléfono quitando los 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>
  • Notificaciones de entrada:
    • inputClaim: "+164-411-452-054"
  • Parámetros de entrada:
    • oldValue: "-"
    • newValue: ""
  • Notificaciones de salida:
    • outputClaim: "+164411452054"

StringJoin

Concatena los elementos de un tipo de notificación de colección de cadenas especificado, usando el separador indicado entre todos los elementos o miembros.

Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim stringCollection Colección que contiene las cadenas que se van a concatenar.
InputParameter delimiter string Cadena que se va a usar como separador; por ejemplo, coma ,.
OutputClaim outputClaim string Cadena que consta de los miembros de la colección de cadenas inputClaim, delimitadas por el parámetro de entrada delimiter.

Ejemplo de StringJoin

En el ejemplo siguiente se toma una colección de cadenas de roles de usuario y se convierte en una cadena con delimitador de comas. Puede usar este método para almacenar una colección de cadenas en una cuenta de usuario de Azure AD B2C. Más adelante, cuando lea la cuenta desde el directorio, podrá usar StringSplit para volver a convertir la cadena con delimitador de coma en una colección de cadenas.

<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>
  • Notificaciones de entrada:
    • inputClaim: [ "Admin", "Author", "Reader" ]
  • Parámetros de entrada:
    • delimiter: ","
  • Notificaciones de salida:
    • outputClaim: "Admin,Author,Reader"

StringSplit

Devuelve una matriz de cadenas que contiene las subcadenas de esta instancia que están delimitadas por elementos de una cadena especificada. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim string Tipo de notificación de cadena que contiene las subcadenas que se van a dividir.
InputParameter delimiter string Cadena que se va a usar como separador; por ejemplo, coma ,.
OutputClaim outputClaim stringCollection Colección de cadenas cuyos elementos contienen las subcadenas de esta cadena que están delimitadas por el parámetro de entrada delimiter.

Nota

Se quitarán todos los elementos existentes de stringCollection OutputClaim.

Ejemplo de StringSplit

En el siguiente ejemplo se toma una cadena con delimitador de coma de roles de usuario y se convierte en una colección de cadenas.

<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>
  • Notificaciones de entrada:
    • inputClaim: Admin,Author,Reader
  • Parámetros de entrada:
    • delimiter: ","
  • Notificaciones de salida:
    • outputClaim: [ "Admin", "Author", "Reader" ]

Expresiones de transformaciones de notificaciones de cadena

Las expresiones de transformaciones de notificaciones de las directivas personalizadas de Azure AD B2C proporcionan información contextual sobre el identificador de inquilino y el identificador de perfil técnico.

Expression Descripción Ejemplo
{TechnicalProfileId} Nombre identificador del perfil técnico. Facebook-OAUTH
{RelyingPartyTenantId} El identificador de inquilino de la directiva del usuario de confianza. your-tenant.onmicrosoft.com
{TrustFrameworkTenantId} El identificador de inquilino del marco de confianza. your-tenant.onmicrosoft.com

Pasos siguientes