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.
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
- Encuentre más muestras de transformación de notificaciones en el repositorio de GitHub comunitario de Azure AD B2C.