Delen via


Datumclaimtransformaties

Dit artikel bevat voorbeelden voor het gebruik van datumclaimtransformaties van het Identity Experience Framework-schema in Azure Active Directory B2C (Azure AD B2C). Zie claimtransformaties voor meer informatie.

AssertDateTimeIsGreaterThan

Bevestigt dat één datum later is dan een tweede datum. Bepaalt of de rightOperand is groter dan de leftOperand. Zo ja, dan wordt er een uitzondering gegenereerd. Bekijk de livedemo van deze claimtransformatie.

Element TransformationClaimType Gegevenstype Notities
InputClaim leftOperand tekenreeks Het type van de eerste claim, die later moet zijn dan de tweede claim.
InputClaim rightOperand tekenreeks Het type van de tweede claim, die eerder moet zijn dan de tweede claim.
InputParameter AssertIfEqualTo booleaans Geeft aan of deze bevestiging een fout moet veroorzaken als de linker operand gelijk is aan de rechter operand. Mogelijke waarden: true (standaard) of false.
InputParameter AssertIfRightOperandIsNotPresent booleaans Geeft aan of deze bevestiging moet worden doorgegeven als de rechter operand ontbreekt.
InputParameter TreatAsEqualIfWithinMillseconds int Geeft het aantal milliseconden op dat tussen de twee datum-tijden is toegestaan om de tijden als gelijk te beschouwen (bijvoorbeeld om rekening te houden met tijdsverschil).

De claimtransformatie AssertDateTimeIsGreaterThan wordt altijd uitgevoerd vanuit een technisch validatieprofiel dat wordt aangeroepen door een zelf-gecontroleerd technisch profiel. De metagegevens van het zelf-gecontroleerde technische profiel DateTimeGreaterThan bepalen het foutbericht dat het technische profiel aan de gebruiker weergeeft. De foutberichten kunnen worden gelokaliseerd.

De diagrammen laten zien hoe de claimtransformatie AssertStringClaimsAreEqual moet worden gebruikt.

Voorbeeld van AssertDateTimeIsGreaterThan

In het volgende voorbeeld wordt de claim currentDateTime vergeleken met de claim approvedDateTime. Er wordt een fout gegenereerd als currentDateTime later is dan approvedDateTime. De transformatie behandelt waarden als gelijk als ze minder dan 5 minuten (30.000 milliseconden) verschillen. Er wordt geen fout gegenereerd als de waarden gelijk zijn, omdat AssertIfEqualTo is ingesteld op 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>

Notitie

Als u in het bovenstaande voorbeeld de invoerparameter AssertIfEqualTo verwijdert en de currentDateTime gelijk is aan approvedDateTime, wordt er een fout gegenereerd. De standaardwaarde van AssertIfEqualTo is true.

  • Invoerclaims:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • Invoerparameters:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 seconden)
  • Resultaat: fout gegenereerd

De claimtransformatie aanroepen

Het volgende technische validatieprofiel Example-AssertDates roept de claimtransformatie AssertApprovedDateTimeLaterThanCurrentDateTime aan.

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

Het zelf-gecontroleerde technische profiel roept het technische validatieprofiel Example-AssertDates aan.

<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

Converteert een DateTime-claimtype naar een Date-claimtype. De claimtransformatie verwijdert de tijdnotatie uit de datum. Bekijk de livedemo van deze claimtransformatie.

Element TransformationClaimType Gegevenstype Notities
InputClaim inputClaim dateTime Het claimtype dat moet worden geconverteerd.
OutputClaim outputClaim date Het claimtype dat wordt geproduceerd nadat deze claimtransformatie is aangeroepen.

Voorbeeld van ConvertDateTimeToDateClaim

In het volgende voorbeeld ziet u de conversie van de claim systemDateTime (gegevenstype dateTime) naar de andere claim systemDate (gegevenstype date).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Invoerclaims:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Uitvoerclaims:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim

Converteert een Date-claimtype naar een DateTime-claimtype. De claimtransformatie converteert de tijdnotatie en voegt 12:00:00 AM toe aan de datum. Bekijk de livedemo van deze claimtransformatie.

Element TransformationClaimType Gegevenstype Notities
InputClaim inputClaim date Het claimtype dat moet worden geconverteerd.
OutputClaim outputClaim dateTime Het claimtype dat wordt geproduceerd nadat deze claimtransformatie is aangeroepen.

Voorbeeld van ConvertDateToDateTimeClaim

In het volgende voorbeeld ziet u de conversie van de claim dateOfBirth (gegevenstype date) naar de andere claim dateOfBirthWithTime (gegevenstype dateTime).

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

DateTimeComparison

Vergelijkt twee datums en bepaalt of de eerste datum later, eerder of gelijk is aan een andere datum. Het resultaat is een nieuwe booleaanse claim met de waarde true of false. Bekijk de livedemo van deze claimtransformatie.

Element TransformationClaimType Gegevenstype Notities
InputClaim firstDateTime dateTime De eerste datum om te vergelijken of deze later, eerder of gelijk is aan de tweede datum. Een null waarde genereert een uitzondering.
InputClaim secondDateTime dateTime De tweede datum die moet worden vergeleken. Een null waarde wordt behandeld als de huidige datum en tijd.
InputParameter timeSpanInSeconds int De tijdsduur die moet worden toegevoegd aan de eerste datum. Mogelijke waarden variëren van -2.147.483.648 tot en met 2.147.483.647.
InputParameter operator tekenreeks Een van de volgende waarden: same, later than of earlier than.
OutputClaim result booleaans De claim die wordt geproduceerd nadat deze claimtransformatie is aangeroepen.

Voorbeeld van DateTimeComparison

Gebruik deze claimtransformatie om te bepalen of de eerste datum plus de parameter timeSpanInSeconds later, eerder of gelijk is aan een andere datum. In het volgende voorbeeld ziet u dat de eerste datum (2022-01-01T00:00:00) plus 90 dagen later is dan de tweede datum (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>
  • Invoerclaims:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Invoerparameters:
    • operator: later dan
    • timeSpanInSeconds: 7776000 (90 dagen)
  • Uitvoerclaims:
    • result: true

IsTermsOfUseConsentRequired

Bepaalt of een dateTime-claimtype eerder of groter is dan een specifieke datum. Het resultaat is een nieuwe booleaanse claim met de waarde true of false. Bekijk de livedemo van deze claimtransformatie.

Item TransformationClaimType Gegevenstype Notities
InputClaim termsOfUseConsentDateTime dateTime Het claimtype dateTime om te controleren of het eerder of later is dan de invoerparameter termsOfUseTextUpdateDateTime. Een niet-gedefinieerde waarde retourneert het resultaat true.
InputParameter termsOfUseTextUpdateDateTime dateTime Het claimtype dateTime om te controleren of het eerder of later is dan de invoerclaim termsOfUseConsentDateTime. Het tijdgedeelte van de datum is optioneel.
OutputClaim result booleaans Het claimtype dat wordt geproduceerd nadat deze claimtransformatie is aangeroepen.

Gebruik deze claimtransformatie om te bepalen of een dateTime-claimtype eerder of groter is dan een specifieke datum. Controleer bijvoorbeeld of een gebruiker toestemming heeft gegeven voor de nieuwste versie van uw gebruiksvoorwaarden of servicevoorwaarden. Als u wilt controleren wanneer een gebruiker voor het laatst toestemming heeft gegeven, slaat u de laatste keer dat de gebruiker de gebruiksvoorwaarden heeft geaccepteerd op in een extensiekenmerk. Wanneer de tekst van de gebruiksvoorwaarden wordt gewijzigd, werkt u de invoerparameter termsOfUseTextUpdateDateTime bij met het tijdstip van de wijziging. Roep vervolgens deze claimtransformatie aan om de datums te vergelijken. Als de claimtransformatie true retourneert, is de waarde termsOfUseConsentDateTime eerder dan de waarde termsOfUseTextUpdateDateTime en kunt u de gebruiker vragen om de bijgewerkte gebruiksvoorwaarden te accepteren.

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

Voorbeeld van IsTermsOfUseConsentRequired

  • Invoerclaims:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Invoerparameters:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Uitvoerclaims:
    • result: true

GetCurrentDateTime

Haalt de huidige datum en tijd in UTC op en voegt de waarde toe aan een claimtype. Bekijk de livedemo van deze claimtransformatie.

Element TransformationClaimType Gegevenstype Notities
OutputClaim currentDateTime dateTime Het claimtype dat wordt geproduceerd nadat deze claimtransformatie is aangeroepen.

Voorbeeld van GetCurrentDateTime

In het volgende voorbeeld ziet u hoe u de huidige datum en tijd kunt ophalen:

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

Volgende stappen