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.

Diagramm, in dem die Verwendung der Anspruchstransformation „AssertStringClaimsAreEqual“ dargestellt ist.

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