Udostępnij za pośrednictwem


Przekształcenia oświadczeń daty

Ten artykuł zawiera przykłady użycia przekształceń oświadczeń daty schematu struktury środowiska tożsamości w usłudze Azure Active Directory B2C (Azure AD B2C). Aby uzyskać więcej informacji, zobacz przekształcenia oświadczeń.

AssertDateTimeIsGreaterThan

Potwierdza, że jedna data jest późniejsza niż druga data. Określa, czy wartość rightOperand jest większa niż leftOperand. Jeśli tak, zgłasza wyjątek. Zapoznaj się z pokazem live tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
InputClaim leftOperand ciąg Typ pierwszego oświadczenia, który powinien być późniejszy niż drugie oświadczenie.
InputClaim rightOperand ciąg Typ drugiego oświadczenia, który powinien być wcześniejszy niż pierwsze oświadczenie.
Inputparameter AssertIfEqualTo boolean Określa, czy to twierdzenie powinno zgłaszać błąd, jeśli lewy operand jest równy prawego operandu. Możliwe wartości: true (wartość domyślna) lub false.
Inputparameter AssertIfRightOperandIsNotPresent boolean Określa, czy to potwierdzenie powinno zostać przekazane, jeśli brakuje prawego operandu.
Inputparameter TreatAsEqualIfWithinMillseconds int Określa liczbę milisekund, aby zezwolić między dwiema godzinami daty, aby wziąć pod uwagę czasy równe (na przykład w celu uwzględnienia niesymetryczności zegara).

Transformacja oświadczeń AssertDateTimeIsGreaterThan jest zawsze wykonywana z profilu technicznego weryfikacji wywoływanego przez własny profil techniczny. Metadane profilu technicznego DateTimeGreaterThan samodzielnie kontrolują komunikat o błędzie prezentowany użytkownikowi przez profil techniczny. Komunikaty o błędach można lokalizować.

Diagramy pokazują, jak używać przekształcenia oświadczeń AssertStringClaimsAreEqual.

Przykład assertDateTimeIsGreaterThan

Poniższy przykład porównuje currentDateTime oświadczenie z oświadczeniem approvedDateTime . Błąd jest zgłaszany, jeśli currentDateTime jest późniejszy niż approvedDateTime. Przekształcenie traktuje wartości jako równe, jeśli znajdują się w ciągu 5 minut (30000 milisekund) różnicy. Nie zgłosi błędu, jeśli wartości są równe, ponieważ AssertIfEqualTo jest ustawiona na falsewartość .

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

Uwaga

W powyższym przykładzie, jeśli usuniesz AssertIfEqualTo parametr wejściowy, a currentDateTime parametr jest równyapprovedDateTime, zostanie zgłoszony błąd. Wartość domyślna AssertIfEqualTo to true.

  • Oświadczenia wejściowe:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • Parametry wejściowe:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 sekund)
  • Wynik: zgłoszony błąd

Wywoływanie przekształcenia oświadczeń

Poniższy Example-AssertDates profil techniczny weryfikacji wywołuje AssertApprovedDateTimeLaterThanCurrentDateTime przekształcenie oświadczeń.

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

Profil techniczny z własnym potwierdzeniem wywołuje profil techniczny weryfikacji 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

Konwertuje DateTime typ oświadczenia na Date typ oświadczenia. Przekształcenie oświadczeń usuwa format godziny z daty. Zapoznaj się z pokazem live tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
InputClaim inputClaim Data i godzina Typ oświadczenia, który ma zostać przekonwertowany.
OutputClaim outputClaim data Typ oświadczenia, który jest generowany po wywołaniu tej transformacji oświadczeń.

Przykład funkcji ConvertDateTimeToDateClaim

W poniższym przykładzie pokazano konwersję oświadczenia systemDateTime (typu danych dateTime) na inne oświadczenie systemDate (typ danych daty).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Oświadczenia wejściowe:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Oświadczenia wyjściowe:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim

Konwertuje Date typ oświadczenia na DateTime typ oświadczenia. Przekształcenie oświadczeń konwertuje format czasu i dodaje do daty 12:00:00. Zapoznaj się z pokazem live tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
InputClaim inputClaim data Typ oświadczenia, który ma zostać przekonwertowany.
OutputClaim outputClaim Data i godzina Typ oświadczenia, który jest generowany po wywołaniu tej transformacji oświadczeń.

Przykład funkcji ConvertDateToDateTimeClaim

W poniższym przykładzie pokazano konwersję oświadczenia dateOfBirth (typu danych daty) na inne oświadczenie dateOfBirthWithTime (typ danych dateTime).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Oświadczenia wejściowe:
    • inputClaim: 2022-01-03
  • Oświadczenia wyjściowe:
    • outputClaim: 2022-01-03T00:00:00.000000Z

DateTimeComparison

Porównuje dwie daty i określa, czy pierwsza data jest późniejsza, wcześniej, czy równa innej. Wynikiem jest nowe oświadczenie logiczne z wartością true lub false. Zapoznaj się z pokazem na żywo tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
InputClaim firstDateTime Data i godzina Pierwsza data do porównania, czy jest późniejsza, wcześniej, czy równa drugiej dacie. Wartość null zgłasza wyjątek.
InputClaim secondDateTime Data i godzina Druga data do porównania. Wartość null jest traktowana jako bieżąca data i godzina.
Inputparameter timeSpanInSeconds int Przedział czasu dodawania do pierwszej daty. Możliwe wartości: zakres od ujemnego -2 147 483 648 do dodatniego 2 147 483 647.
Inputparameter operator ciąg Jedna z następujących wartości: same, later thanlub earlier than.
OutputClaim result boolean Oświadczenie, które jest tworzone po wywołaniu tego przekształcenia oświadczeń.

Przykład elementu DateTimeComparison

Użyj tego przekształcenia oświadczeń, aby określić, czy pierwsza data plus timeSpanInSeconds parametr jest późniejsza, wcześniej lub równa innej. Poniższy przykład pokazuje, że pierwsza data (2022-01-01T00:00:00) plus 90 dni jest późniejsza niż druga data (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>
  • Oświadczenia wejściowe:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Parametry wejściowe:
    • operator: później niż
    • timeSpanInSeconds: 7776000 (90 dni)
  • Oświadczenia wyjściowe:
    • wynik: true

IsTermsOfUseConsentRequired

Ustal, czy dateTime typ oświadczenia jest wcześniejszy, czy większy niż określona data. Wynikiem jest nowe oświadczenie logiczne z wartością true lub false. Zapoznaj się z pokazem na żywo tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
InputClaim termsOfUseConsentDateTime Data i godzina Typ dateTime oświadczenia, aby sprawdzić, czy jest on wcześniejszy, czy nowszy niż termsOfUseTextUpdateDateTime parametr wejściowy. Niezdefiniowana wartość zwraca true wynik.
Inputparameter termsOfUseTextUpdateDateTime Data i godzina Typ dateTime oświadczenia, aby sprawdzić, czy jest wcześniej, czy później niż termsOfUseConsentDateTime oświadczenie wejściowe. Część godziny daty jest opcjonalna.
OutputClaim result boolean Typ oświadczenia, który jest generowany po wywołaniu tego przekształcenia oświadczeń.

Użyj tego przekształcenia oświadczeń, aby określić, czy dateTime typ oświadczenia jest wcześniejszy, czy większy niż określona data. Na przykład sprawdź, czy użytkownik wyraził zgodę na najnowszą wersję warunków użytkowania (TOU), czy warunki użytkowania. Aby sprawdzić czas, kiedy użytkownik wyraził zgodę, zapisz ostatni raz, kiedy użytkownik zaakceptował tou w atrybucie rozszerzenia. Gdy słowo TOU ulegnie zmianie, zaktualizuj termsOfUseTextUpdateDateTime parametr wejściowy przy użyciu czasu zmiany. Następnie wywołaj to przekształcenie oświadczeń, aby porównać daty. Jeśli przekształcenie oświadczeń zwróci truewartość , termsOfUseConsentDateTime wartość jest wcześniejsza niż termsOfUseTextUpdateDateTime wartość i możesz poprosić użytkownika o zaakceptowanie zaktualizowanej jednostki TOU.

<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 — przykład

  • Oświadczenia wejściowe:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Parametry wejściowe:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Oświadczenia wyjściowe:
    • wynik: true

GetCurrentDateTime

Pobierz bieżącą datę i godzinę UTC i dodaj wartość do typu oświadczenia. Zapoznaj się z pokazem na żywo tej transformacji oświadczeń.

Element TransformationClaimType Typ danych Uwagi
OutputClaim currentDateTime Data i godzina Typ oświadczenia, który jest generowany po wywołaniu tego przekształcenia oświadczeń.

Przykład getCurrentDateTime

W poniższym przykładzie pokazano, jak pobrać bieżące dane i czas:

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

Następne kroki