Transformations de revendications Date
Cet article fournit des exemples pour l’utilisation de transformations de revendications de date du schéma Identity Experience Framework dans Azure Active Directory B2C (Azure AD B2C). Pour plus d’informations, consultez Transformations de revendications.
AssertDateTimeIsGreaterThan
Déclare qu’une date est postérieure à une deuxième date. Détermine si rightOperand
est supérieur à leftOperand
. Si oui, lance une exception. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
InputClaim | leftOperand | string | Type de la première revendication, qui doit être postérieure à la deuxième revendication. |
InputClaim | rightOperand | string | Type de la deuxième revendication, qui doit être antérieure à la première revendication. |
InputParameter | AssertIfEqualTo | boolean | Spécifie si cette assertion doit renvoyer une erreur si l’opérande gauche est égal à l’opérande droit. Valeurs possibles : true (par défaut) ou false . |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | Spécifie si cette assertion doit passer si l’opérande droit est manquante. |
InputParameter | TreatAsEqualIfWithinMillseconds | int | Spécifie le nombre de millisecondes autorisées entre les deux dates pour considérer les heures comme égales (par exemple, pour tenir compte du décalage d’horloge). |
La transformation de revendication AssertDateTimeIsGreaterThan est toujours exécutée à partir d’un profil technique de validation appelé par un profil technique autodéclaré. Les métadonnées de profil technique autodéclaré DateTimeGreaterThan contrôlent le message d’erreur présenté à l’utilisateur par le profil technique. Les messages d’erreur peuvent être localisés.
Exemple d’AssertDateTimeIsGreaterThan
L’exemple suivant compare la revendication currentDateTime
à la revendication approvedDateTime
. Une erreur est générée si currentDateTime
est postérieur à approvedDateTime
. La transformation traite les valeurs comme étant égales si elles ont une différence de 5 minutes (30 000 millisecondes). Elle ne génère pas d’erreur si les valeurs sont égales, car AssertIfEqualTo
a la valeur 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>
Notes
Dans l’exemple ci-dessus, si vous supprimez le paramètre d’entrée AssertIfEqualTo
et que currentDateTime
est égal à approvedDateTime
, une erreur est levée. La valeur par défaut de AssertIfEqualTo
est true
.
- Revendications d’entrée :
- leftOperand : 2022-01-01T15:00:00
- rightOperand : 2022-01-22T15:00:00
- Paramètres d’entrée :
- AssertIfEqualTo : false
- AssertIfRightOperandIsNotPresent : true
- TreatAsEqualIfWithinMillseconds : 300000 (30 secondes)
- Résultat : Erreur levée
Appeler la transformation de revendications
Le profil technique de validation Example-AssertDates
suivant appelle la transformation de revendication 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>
Le profil technique autodéclaré appelle le profil technique de validation Example-AssertDates
.
<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
Convertit un type de revendication DateTime
en un type de revendication Date
. La transformation de revendications supprime le format d’heure de la date. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
InputClaim | inputClaim | dateTime | Type de revendication à convertir. |
OutputClaim | outputClaim | Date | Type de revendication généré une fois que cette transformation de revendications a été appelée. |
Exemple de ConvertDateTimeToDateClaim
L’exemple suivant illustre la conversion de la revendication systemDateTime
(type de données dateTime ) en une autre revendication systemDate
(type de données date).
<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Revendications d’entrée :
- inputClaim : 2022-01-03T11:34:22.0000000Z
- Revendications de sortie :
- outputClaim : 2022-01-03
ConvertDateToDateTimeClaim
Convertit un type de revendication Date
en un type de revendication DateTime
. La transformation des revendications convertit le format d’heure et ajoute 12:00:00 AM à la date. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
InputClaim | inputClaim | Date | Type de revendication à convertir. |
OutputClaim | outputClaim | dateTime | Type de revendication généré une fois que cette transformation de revendications a été appelée. |
Exemple de ConvertDateToDateTimeClaim
L’exemple suivant illustre la conversion de la revendication dateOfBirth
(type de données de date) en une autre revendication dateOfBirthWithTime
(type de données date/heure).
<ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Revendications d’entrée :
- inputClaim : 2022-01-03
- Revendications de sortie :
- outputClaim : 2022-01-03T00:00:00.0000000Z
DateTimeComparison
Compare deux dates et détermine si la première date est ultérieure, antérieure ou égale à l’autre. Le résultat est une nouvelle revendication booléenne avec la valeur true
ou false
. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
InputClaim | firstDateTime | dateTime | Première date à comparer si elle est ultérieure, antérieure ou égale à la deuxième. Une valeur null lève une exception. |
InputClaim | secondDateTime | dateTime | Deuxième date à comparer. La valeur NULL est considérée comme la valeur de date et heure actuelle. |
InputParameter | timeSpanInSeconds | int | Timespan à ajouter à la première date. Valeurs possibles : de la plage négative -2,147,483,648 à 2 147 483 647 dans les positifs. |
InputParameter | operator | string | L’une des valeurs suivantes : same , later than ou earlier than . |
OutputClaim | result | boolean | Revendication générée une fois que cette transformation de revendications a été appelée. |
Exemple de DateTimeComparison
Utilisez cette transformation de revendications pour déterminer si la première date plus le paramètre timeSpanInSeconds
est ultérieure, antérieure ou égale à l’autre. L’exemple suivant montre que la première date (2022-01-01T00:00:00) plus 90 jours est ultérieure à la deuxième (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>
- Revendications d’entrée :
- firstDateTime : 2022-01-01T00:00:00.100000Z
- secondDateTime : 2022-03-16T00:00:00.100000Z
- Paramètres d’entrée :
- opérateur : après
- timeSpanInSeconds: 7776000 (90 jours)
- Revendications de sortie :
- résultat : true
IsTermsOfUseConsentRequired
Déterminez si un type de revendication dateTime
est antérieur ou ultérieur à une date spécifique. Le résultat est une nouvelle revendication booléenne avec la valeur true
ou false
. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | dateTime | Le type de revendication dateTime pour vérifier si la valeur est antérieure ou ultérieure à celle du paramètre d’entrée termsOfUseTextUpdateDateTime . Une valeur non définie retourne le résultat true . |
InputParameter | termsOfUseTextUpdateDateTime | dateTime | Le type de revendication dateTime pour vérifier si la valeur est antérieure ou ultérieure à celle de la revendication d’entrée termsOfUseConsentDateTime . La partie heure de la date est facultative. |
OutputClaim | result | boolean | Type de revendication généré une fois que cette transformation de revendications a été appelée. |
Utilisez cette transformation de revendications pour déterminer si un type de revendication dateTime
est antérieur ou ultérieur à une date spécifique. Par exemple, vérifiez si un utilisateur a consenti à la dernière version de vos conditions d’utilisation ou conditions de service. Pour vérifier la date et l’heure de la dernière acceptation par un utilisateur, stockez la dernière fois que l’utilisateur a accepté les conditions d’utilisation dans un attribut d’extension. Lorsque le libellé de vos conditions d’utilisation change, mettez à jour le paramètre d’entrée termsOfUseTextUpdateDateTime
avec l’heure de la modification. Ensuite, appelez cette transformation de revendications pour comparer les dates. Si la transformation de revendications retourne true
, la valeur termsOfUseConsentDateTime
est antérieure à la valeur termsOfUseTextUpdateDateTime
, et vous pouvez demander à l’utilisateur d’accepter les conditions d’utilisation mises à jour.
<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>
Exemple de IsTermsOfUseConsentRequired
- Revendications d’entrée :
- termsOfUseConsentDateTime : 2020-03-09T09:15:00
- Paramètres d’entrée :
- termsOfUseTextUpdateDateTime : 2021-11-15
- Revendications de sortie :
- résultat : true
GetCurrentDateTime
Obtient la date et l’heure UTC actuelles et ajoute la valeur à un type de revendication. Découvrez la démonstration en direct de cette transformation de revendication.
Élément | TransformationClaimType | Type de données | Notes |
---|---|---|---|
OutputClaim | currentDateTime | dateTime | Type de revendication généré une fois que cette transformation de revendications a été appelée. |
Exemple de GetCurrentDateTime
L’exemple suivant montre comment récupérer la date et l’heure actuelles :
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- Revendications de sortie :
- currentDateTime: 2022-01-14T11:40:35.0000000Z
Étapes suivantes
- Vous trouverez d’autres exemples de transformation de revendications dans le dépôt GitHub de la communauté Azure AD B2C