Поделиться через


Преобразования утверждений даты

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

В этой статье приведены примеры использования преобразований утверждений даты схемы Identity Experience Framework в Azure Active Directory B2C (Azure AD B2C). Дополнительные сведения см. в статье о преобразовании утверждений.

AssertDateTimeGreaterThan

Утверждает, что одна дата позже второй даты. Определяет, больше ли rightOperand число leftOperand. Если да, вызывает исключение. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Элемент TransformationClaimType (Тип утверждения) Тип данных Примечания.
InputClaim (Утверждение входа) leftOperand струна Тип первого утверждения, который должен быть позже второго утверждения.
InputClaim (Утверждение входа) rightОперанд струна Тип второго утверждения, который должен быть выше первого утверждения.
ПараметрВвода AssertIfEqualTo булевый Указывает, должно ли это утверждение вызывать ошибку, если левый операнд равен правому операнду. Возможные значения: true (по умолчанию) или false.
ПараметрВвода AssertIfRightOperandIsNotPresent булевый Указывает, следует ли передавать это утверждение, если правый операнд отсутствует.
ПараметрВвода TreatAsEqualIfWithinMillсекунд инт Указывает количество миллисекунда, которое позволяет между двумя датами учитывать время равное (например, для учета отклонений часов).

Преобразование утверждений AssertDateTimeIsGreaterThan всегда выполняется из технического профиля проверки , вызываемого самозаверяемым техническим профилем. Метаданные технического профиля DateTimeGreaterThan управляют сообщением об ошибке, которое технический профиль представляет пользователю. Сообщения об ошибках можно локализовать.

На схемах показано, как использовать преобразование утверждений AssertStringClaimsAreEqual.

Пример AssertDateTimeIsGreaterThan

В следующем примере сравнивается currentDateTime утверждение с утверждением approvedDateTime . Ошибка возникает, если currentDateTime она позже approvedDateTime. Преобразование обрабатывает значения как равные, если они находятся в пределах 5 минут (30000 миллисекундах). Если значения равны, так как AssertIfEqualTo задано значение false, это не приведет к ошибке.

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

Замечание

В приведенном выше примере, если удалить входной AssertIfEqualTo параметр и currentDateTime равноapprovedDateTime, будет возникать ошибка. Значение AssertIfEqualTo по умолчанию — true.

  • Входные утверждения:
    • левыйОперанд: 2022-01-01T15:00:00
    • rightОперанд: 2022-01-22T15:00:00
  • Входные параметры:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: истина
    • TreatAsEqualIfWithinMillseconds: 300000 (30 секунд)
  • Результат: возникла ошибка.

Вызов преобразования утверждений

Example-AssertDates Следующий технический профиль проверки вызывает преобразование утвержденийAssertApprovedDateTimeLaterThanCurrentDateTime.

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

Самозаверяемый технический профиль вызывает технический профиль проверки 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

Преобразует тип утверждения в DateTimeDate тип утверждения. Преобразование утверждений удаляет формат времени из даты. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Элемент TransformationClaimType (Тип утверждения) Тип данных Примечания.
InputClaim (Утверждение входа) InputClaim дата и время Тип утверждения, который необходимо преобразовать.
outputClaim outputClaim дата Тип утверждения, который создается после вызова этого преобразования утверждений.

Пример ConvertDateTimeToDateClaim

В следующем примере показано преобразование утверждения systemDateTime (тип данных dateTime) в другое утверждение systemDate (тип данных date).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Входные утверждения:
    • Утверждение о вводе: 2022-01-03T11:34:22.00000000Z
  • Выходные утверждения:
    • выходЗаявка: 2022-01-03

ConvertDateToDateTimeClaim

Преобразует тип утверждения в DateDateTime тип утверждения. Преобразование утверждений преобразует формат времени и добавляет 12:00:00 в дату. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Элемент TransformationClaimType (Тип утверждения) Тип данных Примечания.
InputClaim (Утверждение входа) InputClaim дата Тип утверждения, который необходимо преобразовать.
outputClaim outputClaim дата и время Тип утверждения, который создается после вызова этого преобразования утверждений.

Пример ConvertDateToDateTimeClaim

В следующем примере показано преобразование утверждения dateOfBirth (тип данных даты) в другое утверждение dateOfBirthWithTime (тип данных dateTime).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Входные утверждения:
    • вводЗаявка: 2022-01-03
  • Выходные утверждения:
    • выходУтверждение: 2022-01-03T00:00:00.0000000Z

DateTimeComparison (Сравнение датыTime)

Сравнивает две даты и определяет, является ли первая дата более поздней, более ранней или равной другой. Результатом является новое логическое утверждение со значением true или false. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Элемент TransformationClaimType (Тип утверждения) Тип данных Примечания.
InputClaim (Утверждение входа) firstDateTime дата и время Первая дата для сравнения того, является ли она более поздней, более ранней или равной второй дате. При значении NULL возникает исключение.
InputClaim (Утверждение входа) secondDateTime дата и время Вторая дата сравнения. Значение NULL рассматривается как текущая дата и время.
ПараметрВвода timeSpanInSeconds инт Таймпан, добавляемый к первой дате. Возможные значения: диапазон от отрицательных –2 147 483 648 до положительных 2 147 483 647.
ПараметрВвода оператор струна Одно из следующих значений: same, later thanили earlier than.
outputClaim результат булевый Утверждение, которое создается после вызова этого преобразования утверждений.

Пример DateTimeComparison

Используйте это преобразование утверждений, чтобы определить, является ли первая дата плюс timeSpanInSeconds параметр более поздним, более ранним или равным другому. В следующем примере показано, что первая дата (2022-01-01T00:00:00) плюс 90 дней позже второй даты (2022-03-16T00:00: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>
  • Входные утверждения:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Входные параметры:
    • оператор: позже
    • timeSpanInSeconds: 7776000 (90 дней)
  • Выходные утверждения:
    • результат: true

IsTermsOfUseConsentRequired

Определите, является ли dateTime тип утверждения более ранним или больше определенной даты. Результатом является новое логическое утверждение со значением true или false. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Товар TransformationClaimType (Тип утверждения) Тип данных Примечания.
InputClaim (Утверждение входа) termsOfUseConsentDateTime дата и время Тип dateTime утверждения, который проверяет, является ли он более ранним или более поздним, чем входной termsOfUseTextUpdateDateTime параметр. Неопределенное значение возвращает true результат.
ПараметрВвода termsOfUseTextUpdateDateTime дата и время Тип dateTime утверждения для проверки того, является ли оно более ранним или более поздним, чем входное termsOfUseConsentDateTime утверждение. Временная часть даты является необязательной.
outputClaim результат булевый Тип утверждения, созданный после вызова этого преобразования утверждений.

Используйте это преобразование утверждений, чтобы определить, является ли dateTime тип утверждения более ранним или больше определенной даты. Например, проверьте, предоставил ли пользователь согласие на последнюю версию условий использования (TOU) или условий обслуживания. Чтобы проверить последний раз, когда пользователь согласился, сохраните последний раз, когда пользователь принял toU в атрибуте расширения. При изменении формулировки toU обновите termsOfUseTextUpdateDateTime входной параметр с временем изменения. Затем вызовите это преобразование утверждений, чтобы сравнить даты. Если преобразование утверждений возвращается true, termsOfUseConsentDateTime значение выше termsOfUseTextUpdateDateTime значения, и вы можете попросить пользователя принять обновленный 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

  • Входные утверждения:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Входные параметры:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Выходные утверждения:
    • результат: true

ПолучитьТекущуюДатуВремя

Получите текущую дату и время в формате UTC и добавьте значение в тип утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

Элемент TransformationClaimType (Тип утверждения) Тип данных Примечания.
outputClaim currentDateTime дата и время Тип утверждения, который создается после вызова этого преобразования утверждений.

Пример GetCurrentDateTime

В следующем примере показано, как получить текущие данные и время:

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • Выходные утверждения:
    • currentDateTime: 2022-01-14T11:40:35.00000000Z

Дальнейшие шаги