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ž leftOperandhodnota . 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.

Diagramy ukazují, jak používat transformaci deklarací identity AssertStringClaimsAreEqual.

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

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