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.

Diagrammes montrant comment utiliser la transformation de revendications AssertStringClaimsAreEqual.

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