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.
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
- Meer voorbeelden van claimtransformaties kunt u vinden in de GitHub-opslagplaats van de Azure AD B2C-community