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.
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å AssertIfEqualTo
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>
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 than eller 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 true
termsOfUseConsentDateTime
ä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
- Hitta fler exempel på anspråkstransformering på github-lagringsplatsen för Azure AD B2C-community