Dela via


Datum för anspråkstransformeringar

Den här artikeln innehåller exempel på hur du använder datumanspråkstransformeringar av Identity Experience Framework-schemat i Azure Active Directory B2C (Azure AD B2C). Mer information finns i anspråkstransformeringar.

AssertDateTimeIsGreaterThan

Anger att ett datum infaller senare än ett andra datum. Avgör om rightOperand är större än leftOperand. Om ja, utlöser ett undantag. Ta en titt på livedemon för den här anspråkstransformeringen.

Element TransformationClaimType Datatyp Kommentarer
InputClaim leftOperand sträng Första anspråkets typ, som ska vara senare än det andra anspråket.
InputClaim rightOperand sträng Det andra anspråkets typ, som ska vara tidigare än det första anspråket.
InputParameter AssertIfEqualTo boolean Anger om den här försäkran ska utlösa ett fel om den vänstra operanden är lika med den högra operanden. Möjliga värden: true (standard) eller false.
InputParameter AssertIfRightOperandIsNotPresent boolean Anger om den här försäkran ska skickas om rätt operand saknas.
InputParameter TreatAsEqualIfWithinMillseconds int Anger hur många millisekunder som ska tillåtas mellan de två datumtiderna för att betrakta tiderna som lika (till exempel för att ta hänsyn till klockskevhet).

Anspråksomvandlingen AssertDateTimeIsGreaterThan körs alltid från en teknisk valideringsprofil som anropas av en egensäkrad teknisk profil. DateTimeGreaterThan-metadata för den självsäkra tekniska profilen styr felmeddelandet som den tekniska profilen visar för användaren. Felmeddelandena kan lokaliseras.

Diagram visar hur du använder anspråkstransformeringen AssertStringClaimsAreEqual.

Exempel på AssertDateTimeIsGreaterThan

I följande exempel jämförs anspråket currentDateTime med anspråket approvedDateTime . Ett fel utlöses om currentDateTime är senare än approvedDateTime. Transformeringen behandlar värden som lika om de är inom 5 minuter (3 0000 millisekunder) skillnad. Det genererar inget fel om värdena är lika eftersom är inställda på AssertIfEqualTofalse.

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

Anteckning

I exemplet ovan genereras ett fel om du tar bort AssertIfEqualTo indataparametern och currentDateTime är likaapprovedDateTime med. Standardvärdet AssertIfEqualTo är true.

  • Inkommande anspråk:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • Indataparametrar:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 sekunder)
  • Resultat: Fel utlöses

Anropa anspråkstransformeringen

Följande Example-AssertDates tekniska verifieringsprofil anropar anspråksomvandlingen 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>

Den självbetitlade tekniska profilen anropar den tekniska valideringsprofilen 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

Konverterar en DateTime anspråkstyp till en Date anspråkstyp. Anspråkstransformeringen tar bort tidsformatet från datumet. Ta en titt på livedemon för den här anspråkstransformeringen.

Element TransformationClaimType Datatyp Kommentarer
InputClaim inputClaim Datetime Anspråkstypen som ska konverteras.
OutputClaim outputClaim datum Anspråkstypen som skapas efter den här anspråkstransformeringen har anropats.

Exempel på ConvertDateTimeToDateClaim

I följande exempel visas konverteringen av anspråket systemDateTime (dateTime-datatyp) till ett annat anspråk systemDate (datumdatatyp).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Inkommande anspråk:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Utgående anspråk:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim

Konverterar en Date anspråkstyp till en DateTime anspråkstyp. Anspråkstransformeringen konverterar tidsformatet och lägger till 12:00:00 AM till datumet. Ta en titt på livedemon för den här anspråkstransformeringen.

Element TransformationClaimType Datatyp Kommentarer
InputClaim inputClaim datum Anspråkstypen som ska konverteras.
OutputClaim outputClaim Datetime Anspråkstypen som skapas efter den här anspråkstransformeringen har anropats.

Exempel på ConvertDateToDateTimeClaim

I följande exempel visas konverteringen av anspråket dateOfBirth (datumdatatyp) till ett annat anspråk dateOfBirthWithTime (dateTime-datatyp).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Inkommande anspråk:
    • inputClaim: 2022-01-03
  • Utdataanspråk:
    • outputClaim: 2022-01-03T00:00:00.0000000Z

DateTimeComparison

Jämför två datum och avgör om det första datumet är senare, tidigare eller lika med ett annat. Resultatet är ett nytt booleskt anspråk med värdet true eller false. Titta på livedemon för den här anspråkstransformeringen.

Element TransformationClaimType Datatyp Kommentarer
InputClaim firstDateTime Datetime Det första datumet att jämföra om det är senare, tidigare eller lika med det andra datumet. Null-värde genererar ett undantag.
InputClaim secondDateTime dateTime Det andra datumet att jämföra. Null-värdet behandlas som aktuellt datum och tid.
InputParameter timeSpanInSeconds int Tidsintervall för att lägga till det första datumet. Möjliga värden: intervall från minus -2 147 483 648 till positiva 2 147 483 647.
InputParameter operator sträng Ett av följande värden: same, later thaneller earlier than.
OutputClaim resultat boolean Anspråket som skapas efter den här anspråkstransformeringen har anropats.

Exempel på DateTimeComparison

Använd den här anspråkstransformeringen för att avgöra om det första datumet plus parametern timeSpanInSeconds är senare, tidigare eller lika med ett annat. I följande exempel visas att det första datumet (2022-01-01T00:00:00) plus 90 dagar är senare än det andra datumet (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>
  • Indataanspråk:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Indataparametrar:
    • operator: senare än
    • timeSpanInSeconds: 7776000 (90 dagar)
  • Output claims:
    • result: true

IsTermsOfUseConsentRequired

Avgör om en dateTime anspråkstyp är tidigare eller större än ett visst datum. The result is a new Boolean claim with a value of true or false. Check out the Live demo of this claims transformation.

Objekt TransformationClaimType Datatyp Kommentarer
InputClaim termsOfUseConsentDateTime dateTime Anspråkstypen dateTime för att kontrollera om den är tidigare eller senare än termsOfUseTextUpdateDateTime indataparametern. Odefinierat värde returnerar true resultatet.
InputParameter termsOfUseTextUpdateDateTime dateTime Anspråkstypen dateTime för att kontrollera om det är tidigare eller senare än indataanspråket termsOfUseConsentDateTime . Tidsdelen av datumet är valfri.
OutputClaim resultat boolean Anspråkstypen som skapas efter den här anspråkstransformeringen har anropats.

Använd den här anspråkstransformeringen för att avgöra om en dateTime anspråkstyp är tidigare eller större än ett visst datum. Kontrollera till exempel om en användare har samtyckt till den senaste versionen av dina användningsvillkor (TOU) eller användarvillkor. Om du vill kontrollera den senaste gången en användare godkände det lagrar du den senaste gången användaren accepterade TOU i ett tilläggsattribut. När tou-formuleringen termsOfUseTextUpdateDateTime ändras uppdaterar du indataparametern med tiden för ändringen. Anropa sedan den här anspråkstransformeringen för att jämföra datumen. Om anspråkstransformeringen returnerar truetermsOfUseConsentDateTime är värdet tidigare än termsOfUseTextUpdateDateTime värdet och du kan be användaren att acceptera den uppdaterade tou-filen.

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

IsTermsOfUseConsentRequired-exempel

  • Input claims:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Input parameters:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Output claims:
    • result: true

GetCurrentDateTime

Hämta aktuellt UTC-datum och tid och lägg till värdet i en anspråkstyp. Check out the Live demo of this claims transformation.

Element TransformationClaimType Datatyp Kommentarer
OutputClaim currentDateTime dateTime Anspråkstypen som skapas efter den här anspråkstransformeringen har anropats.

Exempel på GetCurrentDateTime

I följande exempel visas hur du hämtar aktuella data och tid:

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

Nästa steg