Datum för anspråkstransformeringar

Viktigt!

Från och med den 1 maj 2025 är Azure AD B2C inte längre tillgängligt att köpa för nya kunder. Läs mer i våra vanliga frågor och svar.

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 (på engelska)

Hävdar att ett datum är senare än ett andra datum. Avgör om rightOperand är större än leftOperand. Om ja, utlöser ett undantag. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Komponent TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
InputClaim (på engelska) leftOperand snöre Första anspråkets typ, som ska vara senare än det andra anspråket.
InputClaim (på engelska) rightOperand snöre Den andra anspråkstypen, som ska vara tidigare än det första anspråket.
InputParameter (InputParameter) AssertIfEqualTo booleskt 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 (InputParameter) AssertIfRightOperandIsNotPresent booleskt Anger om den här försäkran ska skickas om rätt operand saknas.
InputParameter (InputParameter) TreatAsEqualIfWithinMillseconds Int Anger antalet 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 klocksnedställning).

AssertDateTimeIsGreaterThan-anspråksomvandlingen körs alltid från en teknisk valideringsprofil som anropas av en självsäkrad teknisk profil. DateTimeGreaterThan-metadata för den självsäkra tekniska profilen styr felmeddelandet som den tekniska profilen presenterar 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. Omvandlingen behandlar värden som lika om de är inom 5 minuter (3 000 millisekunder) skillnad. Det utlöser inget fel om värdena är lika med eftersom AssertIfEqualTo är inställt på 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>

Anmärkning

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

  • Indataanspråk:
    • leftOperand: 2022-01-01T15:00:00
    • högerOperand: 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älvsäkra 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 (KonverteraDateTimeToDateClaim)

Konverterar en DateTime anspråkstyp till en Date anspråkstyp. Anspråkstransformeringen tar bort tidsformatet från datumet. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Komponent TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
InputClaim (på engelska) inputClaim (på engelska) datumtid Anspråkstypen som ska konverteras.
OutputClaim (Utdataanspråk) outputClaim (utdataanspråk) 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>
  • Indataanspråk:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Utdataanspråk:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim (KonverteraDateToDateTimeAnspråk)

Konverterar en Date anspråkstyp till en DateTime anspråkstyp. Anspråkstransformeringen konverterar tidsformatet och lägger till 12:00:00 AM till datumet. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Komponent TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
InputClaim (på engelska) inputClaim (på engelska) datum Anspråkstypen som ska konverteras.
OutputClaim (Utdataanspråk) outputClaim (utdataanspråk) datumtid 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>
  • Indataanspråk:
    • inputClaim: 2022-01-03
  • Utdataanspråk:
    • outputClaim: 2022-01-03T00:00:00.0000000Z

DateTimeComparison (på engelska)

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. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Komponent TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
InputClaim (på engelska) firstDateTime datumtid Det första datumet för att jämföra om det är senare, tidigare eller lika med det andra datumet. Null-värdet genererar ett undantag.
InputClaim (på engelska) secondDateTime datumtid Det andra datumet att jämföra. Null-värdet behandlas som aktuellt datum och tid.
InputParameter (InputParameter) timeSpanInSeconds Int Tidsintervall för att lägga till det första datumet. Möjliga värden: intervall från negativa -2 147 483 648 till positiva 2 147 483 647.
InputParameter (InputParameter) operatör snöre Ett av följande värden: same, later thaneller earlier than.
OutputClaim (Utdataanspråk) resultat booleskt 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. Följande exempel visar 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)
  • Utdataanspråk:
    • Resultat: Sant

IsTermsOfUseConsentRequired (på engelska)

Avgör om en dateTime anspråkstyp är tidigare eller större än ett visst datum. Resultatet är ett nytt booleskt anspråk med värdet true eller false. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Objekt TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
InputClaim (på engelska) termsOfUseConsentDateTime datumtid Anspråkstypen dateTime för att kontrollera om den är tidigare eller senare än termsOfUseTextUpdateDateTime indataparametern. Odefinierat värde returnerar true resultat.
InputParameter (InputParameter) termsOfUseTextUpdateDateTime datumtid Anspråkstypen dateTime för att kontrollera om den är tidigare eller senare än indataanspråket termsOfUseConsentDateTime . Tidsdelen av datumet är valfri.
OutputClaim (Utdataanspråk) resultat booleskt 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ändningsvillkor. Om du vill kontrollera den senaste gången en användare har samtyckt lagrar du den senaste gången användaren accepterade användarbehörigheten i ett tilläggsattribut. När din TOU-formulering ändras uppdaterar termsOfUseTextUpdateDateTime du indataparametern med tidpunkten 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:en.

<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

  • Indataanspråk:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Indataparametrar:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Utdataanspråk:
    • Resultat: Sant

HämtaNuvarandeDatumTid

Hämta aktuellt UTC-datum och tid och lägg till värdet i en anspråkstyp. Kolla in live-demonstrationen av den här anspråkstransformeringen.

Komponent TransformationClaimType (OmvandlingAnspråkTyp) Datatyp Noteringar
OutputClaim (Utdataanspråk) currentDateTime datumtid 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>
  • Utdataanspråk:
    • currentDateTime: 2022-01-14T11:40:35.0000000Z

Nästa steg

  • Hitta fler exempel på anspråkstransformering på GitHub-lagringsplatsen för Azure AD B2C-communityn