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ć.
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 false
wartość .
<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 than lub 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 true
wartość , 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
- Znajdź więcej przykładów przekształcania oświadczeń w repozytorium GitHub społeczności usługi Azure AD B2C