Transformationen von Datumsansprüchen
Dieser Artikel enthält Beispiele für die Verwendung von Transformationen von Datumsansprüchen des Identity Experience Framework-Schemas in Azure Active Directory B2C (Azure AD B2C). Weitere Informationen finden Sie unter Anspruchstransformationen.
AssertDateTimeIsGreaterThan
Bestätigt, dass ein Datum nach einem zweiten Datum liegt. Bestimmt, ob rightOperand
größer als leftOperand
ist. Wenn Ja, wird eine Ausnahme ausgelöst. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | leftOperand | Zeichenfolge | Typ des ersten Anspruchs, der nach dem zweiten Anspruch liegen sollte. |
InputClaim | rightOperand | Zeichenfolge | Typ des zweiten Anspruchs, der vor dem ersten Anspruch liegen sollte. |
InputParameter | AssertIfEqualTo | boolean | Gibt an, ob diese Assertion einen Fehler auslösen soll, wenn der linke Operand gleich dem rechten Operanden ist. Mögliche Werte: true (Standard) oder false . |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | Gibt an, ob diese Assertion positiv ausfallen soll, wenn der rechte Operanden fehlt. |
InputParameter | TreatAsEqualIfWithinMillseconds | INT | Gibt die Anzahl der Millisekunden an, die zwischen den beiden Datum/Uhrzeit-Werten liegen darf, damit die Zeiten als gleich angesehen werden (z. B. Abweichungen durch Gangungenauigkeiten bei Uhren). |
Die Anspruchstransformation AssertDateTimeIsGreaterThan wird immer über ein technisches Validierungsprofil ausgeführt, das von einem selbstbestätigten technischen Profil aufgerufen wird. Die Metadaten des selbstbestätigten technischen Profils DateTimeGreaterThan steuern die Fehlermeldung, die das technische Profil dem Benutzer anzeigt. Die Fehlermeldungen können lokalisiert werden.
Ein Beispiel für AssertDateTimeIsGreaterThan
Im folgenden Beispiel wird der currentDateTime
-Anspruch mit dem approvedDateTime
-Anspruch verglichen. Ein Fehler wird ausgelöst, wenn currentDateTime
nach approvedDateTime
liegt. Die Transformation behandelt Werte als gleich, wenn sie innerhalb eines Abstands von 5 Minuten (30.000 Millisekunden) liegen. Es wird kein Fehler ausgelöst, wenn die Werte gleich sind, da AssertIfEqualTo
auf false
festgelegt ist.
<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>
Hinweis
Wenn Sie im obigen Beispiel den Eingabeparameter AssertIfEqualTo
entfernen und currentDateTime
gleich approvedDateTime
ist, wird ein Fehler ausgelöst. Der Standardwert für AssertIfEqualTo
lautet true
.
- Eingabeansprüche:
- leftOperand: 2022-01-01T15:00:00
- rightOperand: 2022-01-22T15:00:00
- Eingabeparameter:
- AssertIfEqualTo: falsch
- AssertIfRightOperandIsNotPresent: wahr
- TreatAsEqualIfWithinMillseconds: 300000 (30 Sekunden)
- Ergebnis: Fehler wird ausgelöst.
Hinzufügen der Anspruchstransformation
Das folgende Example-AssertDates
technische Validierungsprofil ruft die AssertApprovedDateTimeLaterThanCurrentDateTime
Anspruchstransformation auf.
<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>
Das selbstbestätigte technische Profil ruft das Example-AssertDates
technische Validierungsprofil auf.
<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
Konvertiert einen DateTime
Anspruchstyp in einen Date
Anspruchstyp. Die Anspruchstransformation entfernt das Uhrzeitformat aus dem Datum. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | dateTime | Der zu konvertierende Anspruchstyp. |
OutputClaim | outputClaim | date | Dies ist der Anspruchstyp, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Ein Beispiel für ConvertDateTimeToDateClaim
Das folgende Beispiel veranschaulicht die Konvertierung des Anspruchs systemDateTime
(Datentyp „dateTime“) in einen anderen Anspruch systemDate
(Datentyp „date“).
<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- inputClaim: 2022-01-03T11:34:22.0000000Z
- Ausgabeansprüche:
- outputClaim: 2022-01-03
ConvertDateToDateTimeClaim
Konvertiert einen Date
Anspruchstyp in einen DateTime
Anspruchstyp. Die Anspruchstransformation konvertiert das Uhrzeitformat und fügt dem Datum 12:00:00 AM hinzu. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | date | Der zu konvertierende Anspruchstyp. |
OutputClaim | outputClaim | dateTime | Dies ist der Anspruchstyp, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Ein Beispiel für ConvertDateToDateTimeClaim
Das folgende Beispiel veranschaulicht die Konvertierung des Anspruchs dateOfBirth
(Datentyp „date“) in einen anderen Anspruch dateOfBirthWithTime
(Datentyp „dateTime“).
<ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- inputClaim: 2022-01-03
- Ausgabeansprüche:
- outputClaim: 2022-01-03T00:00:00.0000000Z
DateTimeComparison
Vergleicht zwei Datumsangaben und bestimmt, ob das erste Datum später, früher oder gleich einem anderen Datum ist. Das Ergebnis ist ein neuer boolescher Anspruch mit dem Wert von true
oder false
. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | firstDateTime | dateTime | Das erste Datum, das verglichen werden soll, ob es später, früher oder gleich dem zweiten Datum ist. Ein Null-Wert löst eine Ausnahme aus. |
InputClaim | secondDateTime | dateTime | Das zweite, zu vergleichende Datum. Der NULL-Wert wird als das aktuelle Datum und die aktuelle Uhrzeit behandelt. |
InputParameter | timeSpanInSeconds | INT | Zeitraum, der dem ersten Datum hinzugefügt werden soll. Mögliche Werte: Rangiert von Negativen -2.147.483.648 bis zu Positiven 2.147.483.647. |
InputParameter | Operator | Zeichenfolge | Einer der folgenden Werte: same , later than , oder earlier than . |
OutputClaim | result | boolean | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Ein Beispiel für DateTimeComparison
Verwenden Sie diese Anspruchstransformation, um zu bestimmen, ob das erste Datum plus der timeSpanInSeconds
Parameter später, früher oder gleich einem anderen ist. Das folgende Beispiel zeigt, dass das erste Datum (2022-01-01T00:00:00) plus 90 Tage nach dem zweiten Datum (2022-03-16T00:00:00) liegt.
<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>
- Eingabeansprüche:
- firstDateTime: 2022-01-01T00:00:00.100000Z
- secondDateTime: 2022-03-16T00:00:00.100000Z
- Eingabeparameter:
- operator: später als
- timeSpanInSeconds: 7776000 (90 days)
- Ausgabeansprüche:
- result: true
IsTermsOfUseConsentRequired
Bestimmen Sie, ob ein dateTime
Anspruchstyp älter oder größer als ein bestimmtes Datum ist. Das Ergebnis ist ein neuer boolescher Anspruch mit dem Wert von true
oder false
. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | dateTime | Dies ist der dateTime -Anspruchstyp, mit dem überprüft werden soll, ob er vor oder nach dem termsOfUseTextUpdateDateTime -Eingabeparameter liegt. Ein nicht definierter Wert gibt das Ergebnis true zurück. |
InputParameter | termsOfUseTextUpdateDateTime | dateTime | Dies ist der dateTime -Anspruchstyp, mit dem überprüft werden soll, ob er vor oder nach dem termsOfUseConsentDateTime -Eingabeanspruch liegt. Der Zeitteil des Datums ist optional. |
OutputClaim | result | boolean | Dies ist der Anspruchstyp, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Verwenden Sie diese Anspruchstransformation, um zu bestimmen, ob ein dateTime
Anspruchstyp älter oder größer als ein bestimmtes Datum ist. Überprüfen Sie beispielsweise, ob ein Benutzer der neuesten Version Ihrer Nutzungsbedingungen (Terms of Use, TOU) oder der Vertragsbedingungen zugestimmt hat. Um den Zeitpunkt der letzten Zustimmung eines Benutzers zu überprüfen, speichern Sie den Zeitpunkt, zu dem der Benutzer die Nutzungsbedingungen zuletzt akzeptiert hat, in einem Erweiterungsattribut. Wenn sich ihre Nutzungsbedingungsformulierung ändert, aktualisieren Sie den termsOfUseTextUpdateDateTime
Eingabeparameter mit dem Zeitpunkt der Änderung. Rufen Sie dann diese Anspruchstransformation auf, um die Datumsangaben zu vergleichen. Wenn die Anspruchstransformation true
zurückgibt, liegt der termsOfUseConsentDateTime
Wert vor dem termsOfUseTextUpdateDateTime
Wert, und Sie können den Benutzer bitten, die aktualisierten Nutzungsbedingungen zu akzeptieren.
<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>
Ein Beispiel für IsTermsOfUseConsentRequired-Beispiel
- Eingabeansprüche:
- termsOfUseConsentDateTime: 2020-03-09T09:15:00
- Eingabeparameter:
- termsOfUseTextUpdateDateTime: 2021-11-15
- Ausgabeansprüche:
- result: true
GetCurrentDateTime
Ruft den aktuellen UTC-Datum/Uhrzeit-Wert ab und fügt den Wert zu einem Anspruchstyp hinzu. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
OutputClaim | currentDateTime | dateTime | Dies ist der Anspruchstyp, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Ein Beispiel für GetCurrentDateTime
Das folgende Beispiel zeigt, wie sie die aktuellen Daten und die aktuelle Uhrzeit abrufen:
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- Ausgabeansprüche:
- currentDateTime: 2022-01-14T11:40:35.0000000Z
Nächste Schritte
- Weitere Beispiele für die Anspruchstransformation finden Sie im GitHub-Repository der Azure-AD-B2C-Community