Compartir vía


Transformaciones de notificaciones de fecha

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

AssertDateTimeIsGreaterThan

Declara que una fecha es posterior a una segunda fecha. Determina si es rightOperand mayor que leftOperand. Si el valor es Sí, lanza una excepción. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim leftOperand string Tipo de la primera notificación, que debe ser mayor que la segunda notificación.
InputClaim rightOperand string Tipo de la segunda notificación, que debe ser menor que la primera notificación.
InputParameter AssertIfEqualTo boolean Especifica si esta aserción produce un error si el operando izquierdo es igual al operando derecho. Valores posibles: true (opción predeterminada) o false.
InputParameter AssertIfRightOperandIsNotPresent boolean Especifica si esta aserción debe pasar si falta el operando derecho.
InputParameter TreatAsEqualIfWithinMillseconds int Especifica el número de milisegundos que se permiten entre las dos horas para considerar que las horas son iguales (por ejemplo, para tener en cuenta para el desplazamiento del reloj).

La transformación de notificaciones AssertDateTimeIsGreaterThan siempre se ejecuta desde un perfil técnico de validación llamado por un perfil técnico autoafirmado. Los metadatos de un perfil técnico autoafirmado DateTimeGreaterThan controla el mensaje de error que el perfil técnico presenta al usuario. Los mensajes de error se pueden localizar.

Diagramas en donde se muestra cómo usar la transformación de notificaciones AssertStringClaimsAreEqual.

Ejemplo de AssertDateTimeIsGreaterThan

En el ejemplo siguiente se comparan la notificación currentDateTime con la notificación approvedDateTime. Se produce un error si currentDateTime es mayor que approvedDateTime. La transformación trata los valores como iguales si están dentro de la diferencia de 5 minutos (30 000 milisegundos). No producirá un error si los valores son iguales porque AssertIfEqualTo está establecido en false.

<ClaimsTransformation Id="AssertApprovedDateTimeLaterThanCurrentDateTime" TransformationMethod="AssertDateTimeIsGreaterThan">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="approvedDateTime" TransformationClaimType="leftOperand" />
    <InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="rightOperand" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="AssertIfEqualTo" DataType="boolean" Value="false" />
    <InputParameter Id="AssertIfRightOperandIsNotPresent" DataType="boolean" Value="true" />
    <InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
  </InputParameters>
</ClaimsTransformation>

Nota:

En el ejemplo anterior, si quita el parámetro de entrada AssertIfEqualTo y currentDateTime es igual a approvedDateTime, se producirá un error. El valor predeterminado de AssertIfEqualTo es true.

  • Notificaciones de entrada:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • Parámetros de entrada:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 segundos)
  • Resultado: aparece un error

Llamada a la transformación de notificaciones

El siguiente perfil técnico de validación Example-AssertDates llama a la transformación de notificaciones AssertApprovedDateTimeLaterThanCurrentDateTime.

<TechnicalProfile Id="Example-AssertDates">
  <DisplayName>Unit test</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="ComparisonResult" DefaultValue="false" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertDates" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

El perfil técnico autoafirmado llama al perfil técnico Example-AssertDates de validación.

<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
  <DisplayName>User ID signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
    <Item Key="DateTimeGreaterThan">Custom error message if the provided right operand is greater than the right operand.</Item>
  </Metadata>
  ...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="ClaimsTransformation-AssertDateTimeIsGreaterThan" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

ConvertDateTimeToDateClaim

Convierte un tipo de notificación DateTime en un tipo de notificación Date. La transformación de notificaciones quita el formato de hora de la fecha. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim dateTime El tipo de notificación que se va a convertir.
OutputClaim outputClaim date El tipo de notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de ConvertDateTimeToDateClaim

En el ejemplo siguiente se muestra la conversión de la notificación systemDateTime (tipo de datos dateTime) en otra notificación systemDate (tipo de datos date).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Notificaciones de salida:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim

Convierte un tipo de notificación Date en un tipo de notificación DateTime. La transformación de notificaciones convierte el formato de hora y agrega 12:00:00 a. m. a la fecha. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
InputClaim inputClaim date El tipo de notificación que se va a convertir.
OutputClaim outputClaim dateTime El tipo de notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ej+ de ConvertDateToDateTimeClaim

En el ejemplo siguiente se muestra la conversión de la notificación dateOfBirth (tipo de datos date) en otra notificación dateOfBirthWithTime (tipo de datos dateTime).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Notificaciones de entrada:
    • inputClaim: 2022-01-03
  • Notificaciones de salida:
    • outputClaim: 2022-01-03T00:00:00.0000000Z

DateTimeComparison

Compara dos fechas y determina si la primera fecha es posterior, anterior o igual que otra. El resultado es una 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 firstDateTime dateTime La primera fecha que se va a comparar si es posterior, anterior o igual a la segunda fecha. Un valor nulo inicia una excepción.
InputClaim secondDateTime dateTime La segunda fecha que se comparará. El valor NULL se trata como el valor de fecha y hora actual.
InputParameter timeSpanInSeconds int El intervalo de tiempo que se agregará a la primera fecha. Valores posibles: van de -2.147.483.648 negativos a 2.147.483.647 positivos.
InputParameter operator string Puede ser uno de los siguientes valores: same, later than o earlier than.
OutputClaim resultado boolean Notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de DateTimeComparison

Use esta transformación de notificaciones para determinar si la primera fecha más el parámetro timeSpanInSeconds es posterior, anterior o igual que otra. En el ejemplo siguiente se muestra que la primera fecha (2022-01-01T00:00:00) más 90 días es posterior a la segunda fecha (2022-03-16T00:00:00).

<ClaimsTransformation Id="CompareLastTOSAcceptedWithCurrentDateTime" TransformationMethod="DateTimeComparison">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_LastTOSAccepted" TransformationClaimType="secondDateTime" />
    <InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="firstDateTime" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="operator" DataType="string" Value="later than" />
    <InputParameter Id="timeSpanInSeconds" DataType="int" Value="7776000" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="result" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de entrada:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Parámetros de entrada:
    • operator: mayor que
    • timeSpanInSeconds: 7776000 (90 días)
  • Notificaciones de salida:
    • result: true

IsTermsOfUseConsentRequired

Determine si un tipo de notificación dateTime es anterior o mayor que una fecha específica. El resultado es una 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 termsOfUseConsentDateTime dateTime El tipo de notificación dateTime para comprobar si es anterior o posterior al parámetro de entrada termsOfUseTextUpdateDateTime. Un valor indefinido devuelve true como resultado.
InputParameter termsOfUseTextUpdateDateTime dateTime El tipo de notificación dateTime para comprobar si es anterior o posterior a la notificación de entrada termsOfUseConsentDateTime. La parte de la hora de la fecha es opcional.
OutputClaim resultado boolean El tipo de notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Use esta transformación de notificaciones para determinar si un tipo de notificación dateTime es anterior o mayor que una fecha específica. Por ejemplo, compruebe si un usuario ha dado su consentimiento a la versión más reciente de los términos de uso (TOU) o de los términos de servicio. Para comprobar la última vez que un usuario consintió, almacene la última vez que el usuario aceptó la TOU en un atributo de extensión. Cuando cambie la redacción de la TUU, actualice el parámetro de entrada termsOfUseTextUpdateDateTime con la hora del cambio. A continuación, llame a esta transformación de notificaciones para comparar las fechas. Si la transformación de notificaciones devuelve true, el valor termsOfUseConsentDateTime es anterior al valor termsOfUseTextUpdateDateTime y puede pedir al usuario que acepte el TOU actualizado.

<ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2021-11-15T00:00:00" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
  </OutputClaims>
</ClaimsTransformation>

Ejemplo de isTermsOfUseConsentRequired

  • Notificaciones de entrada:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Parámetros de entrada:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Notificaciones de salida:
    • result: true

GetCurrentDateTime

Obtenga la fecha y la hora UTC actual y agregue el valor a ClaimType. Consulte la demo en vivo de esta transformación de notificaciones.

Elemento TransformationClaimType Tipo de datos Notas
OutputClaim currentDateTime dateTime El tipo de notificación que se genera después de que se haya invocado esta transformación de notificaciones.

Ejemplo de GetCurrentDateTime

En el ejemplo siguiente se muestra cómo obtener los datos y la hora actuales:

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • Notificaciones de salida:
    • currentDateTime: 2022-01-14T11:40:35.0000000Z

Pasos siguientes