Transformace deklarací identity dat
Tento článek obsahuje příklady použití transformací deklarací data schématu Identity Experience Framework v Azure Active Directory B2C (Azure AD B2C). Další informace najdete v tématu Transformace deklarací identity.
AssertDateTimeIsGreaterThan
Potvrzuje, že jedno datum je pozdější než druhé datum. Určuje, zda rightOperand
je hodnota větší než leftOperand
hodnota . Pokud ano, vyvolá výjimku. Podívejte se na živou ukázku této transformace deklarací identity.
Prvek | TransformationClaimType | Typ dat | Poznámky |
---|---|---|---|
InputClaim | leftOperand | řetězec | Typ první deklarace identity, který by měl být pozdější než druhá deklarace identity. |
InputClaim | rightOperand | řetězec | Typ druhé deklarace identity, který by měl být dřívější než první deklarace identity. |
InputParameter | AssertIfEqualTo | boolean | Určuje, jestli má tento kontrolní výraz vyvolat chybu, pokud se levý operand rovná pravému operandu. Možné hodnoty: true (výchozí) nebo false . |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | Určuje, zda má být tento kontrolní výraz zadán, pokud chybí pravý operand. |
InputParameter | TreatAsEqualIfWithinMillseconds | int | Určuje počet milisekund, které se mají povolit mezi dvěma datovými časy, aby se časy považovaly za stejné (například kvůli nerovnoměrné distribuci hodin). |
Deklarace identity AssertDateTimeIsGreaterThan se vždy provádí z technického profilu ověření , který je volán vlastním technickým profilem. Metadata vlastního technického profilu DateTimeGreaterThan řídí chybovou zprávu, kterou technický profil zobrazí uživateli. Chybové zprávy lze lokalizovat.
Příklad AssertDateTimeIsGreaterThan
Následující příklad porovná currentDateTime
deklaraci identity s deklarací approvedDateTime
identity. Pokud je pozdější než approvedDateTime
, vyvolá currentDateTime
se chyba. Transformace považuje hodnoty za stejné, pokud jsou v rozmezí 5minutového rozdílu (30 000 milisekund). Pokud jsou hodnoty stejné, nevyvolá chybu, protože AssertIfEqualTo
je nastavená na false
hodnotu .
<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>
Poznámka
Pokud ve výše uvedeném příkladu odeberete AssertIfEqualTo
vstupní parametr a currentDateTime
hodnota je rovnoapprovedDateTime
, vyvolá se chyba. Výchozí AssertIfEqualTo
hodnota je true
.
- Vstupní deklarace identity:
- leftOperand: 2022-01-01T15:00:00
- rightOperand: 2022-01-22T15:00:00
- Vstupní parametry:
- AssertIfEqualTo: false
- AssertIfRightOperandIsNotPresent: true
- TreatAsEqualIfWithinMillseconds: 300000 (30 sekund)
- Výsledek: Vyvolání chyby
Volání transformace deklarací identity
Následující Example-AssertDates
technický profil ověřování volá AssertApprovedDateTimeLaterThanCurrentDateTime
transformaci deklarací identity.
<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>
Technický profil s vlastním potvrzením volá technický profil ověření 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
DateTime
Převede typ deklarace identity na Date
typ deklarace identity. Transformace deklarací identity odebere z data formát času. Podívejte se na živou ukázku této transformace deklarací identity.
Prvek | TransformationClaimType | Typ dat | Poznámky |
---|---|---|---|
InputClaim | inputClaim | data a času. | Typ deklarace identity, který se má převést. |
OutputClaim | outputClaim | date | Byl vyvolán typ deklarace identity, který se vytvoří po transformaci deklarací identity. |
Příklad ConvertDateTimeToDateClaim
Následující příklad ukazuje převod deklarace identity systemDateTime
(datový typ dateTime) na jinou deklaraci identity systemDate
(datový typ date).
<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Vstupní deklarace identity:
- inputClaim: 2022-01-03T11:34:22.0000000Z
- Výstupní deklarace identity:
- outputClaim: 2022-01-03
ConvertDateToDateTimeClaim
Date
Převede typ deklarace identity na DateTime
typ deklarace identity. Transformace deklarací identity převede formát času a k datu se přičte 0:00:00. Podívejte se na živou ukázku této transformace deklarací identity.
Prvek | TransformationClaimType | Typ dat | Poznámky |
---|---|---|---|
InputClaim | inputClaim | date | Typ deklarace identity, který se má převést. |
OutputClaim | outputClaim | data a času. | Byl vyvolán typ deklarace identity, který se vytvoří po transformaci deklarací identity. |
Příklad ConvertDateToDateTimeClaim
Následující příklad ukazuje převod deklarace identity dateOfBirth
(datového typu datum) na jinou deklaraci identity dateOfBirthWithTime
(datový typ dateTime).
<ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Vstupní deklarace identity:
- inputClaim: 2022-01-03
- Výstupní deklarace identity:
- outputClaim: 2022-01-03T00:00:00.0000000Z
Datum a časComparison
Porovná dvě kalendářní data a určí, zda je první datum pozdější, dřívější nebo roven jinému. Výsledkem je nová logická deklarace identity s hodnotou true
nebo false
. Podívejte se na živou ukázku této transformace deklarací identity.
Prvek | TransformationClaimType | Typ dat | Poznámky |
---|---|---|---|
InputClaim | firstDateTime | data a času. | První datum pro porovnání, jestli je pozdější, dřívější nebo se rovná druhému datu. Hodnota Null vyvolá výjimku. |
InputClaim | secondDateTime | data a času. | Druhé datum k porovnání. Hodnota Null je považována za aktuální datum a čas. |
InputParameter | timeSpanInSeconds | int | Časový rozsah, který se má přidat k prvnímu datu. Možné hodnoty: rozsah od záporných -2 147 483 648 do kladných 2 147 483 647. |
InputParameter | operátor | řetězec | Jedna z následujících hodnot: same , later than nebo earlier than . |
OutputClaim | result | boolean | Deklarace identity vytvořená po transformaci deklarací identity byla vyvolána. |
Příklad funkce DateTimeComparison
Pomocí této transformace deklarací identity můžete určit, jestli je první datum a timeSpanInSeconds
parametr pozdější, dřívější nebo roven jinému. Následující příklad ukazuje, že první datum (2022-01-01T00:00:00) plus 90 dní je pozdější než druhé datum (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>
- Vstupní deklarace identity:
- firstDateTime: 2022-01-01T00:00:00.100000Z
- secondDateTime: 2022-03-16T00:00:00.100000Z
- Vstupní parametry:
- operátor: později než
- timeSpanInSeconds: 7776000 (90 dní)
- Výstupní deklarace identity:
- result: true
IsTermsOfUseConsentRequired
Určete, jestli dateTime
je typ deklarace identity dřívější nebo větší než konkrétní datum. Výsledkem je nová logická deklarace identity s hodnotou true
nebo false
. Podívejte se na živou ukázku této transformace deklarací identity.
Položka | TransformationClaimType | Datový typ | Poznámky |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | data a času. | Typ dateTime deklarace identity, který zkontroluje, jestli je starší nebo novější než termsOfUseTextUpdateDateTime vstupní parametr. Nedefinovaná hodnota vrátí true výsledek. |
InputParameter | termsOfUseTextUpdateDateTime | data a času. | Typ dateTime deklarace identity, který kontroluje, jestli je starší nebo pozdější než termsOfUseConsentDateTime vstupní deklarace identity. Časová část data je volitelná. |
OutputClaim | result | boolean | Byl vyvolán typ deklarace identity vytvořený po transformaci deklarací identity. |
Pomocí této transformace deklarací identity můžete určit, jestli dateTime
je typ deklarace identity starší nebo větší než konkrétní datum. Zkontrolujte například, jestli uživatel udělil souhlas s nejnovější verzí vašich podmínek použití (TOU) nebo podmínek služby. Pokud chcete zkontrolovat čas posledního souhlasu uživatele, uložte čas posledního přijetí tou uživatelem v atributu rozšíření. Když se změní formulace vašich tou, aktualizujte termsOfUseTextUpdateDateTime
vstupní parametr s časem změny. Potom voláním této transformace deklarací identity porovnejte data. Pokud transformace deklarací identity vrátí true
, termsOfUseConsentDateTime
hodnota je starší než hodnota termsOfUseTextUpdateDateTime
a můžete požádat uživatele, aby přijal aktualizované podmínky použití.
<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>
Příklad IsTermsOfUseConsentRequired
- Vstupní deklarace identity:
- termsOfUseConsentDateTime: 2020-03-09T09:15:00
- Vstupní parametry:
- termsOfUseTextUpdateDateTime: 2021-11-15
- Výstupní deklarace identity:
- result: true
GetCurrentDateTime
Získejte aktuální datum a čas UTC a přidejte hodnotu k typu deklarace identity. Podívejte se na živou ukázku této transformace deklarací identity.
Prvek | TransformationClaimType | Typ dat | Poznámky |
---|---|---|---|
OutputClaim | currentDateTime | data a času. | Byl vyvolán typ deklarace identity, který se vytvoří po transformaci deklarací identity. |
Příklad GetCurrentDateTime
Následující příklad ukazuje, jak získat aktuální data a čas:
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- Výstupní deklarace identity:
- currentDateTime: 2022-01-14T11:40:35.0000000Z
Další kroky
- Další ukázky transformace deklarací identity najdete v úložišti githubu komunity Azure AD B2C.