Преобразования логических утверждений

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

Утверждение AndClaims

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

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

Пример AndClaims

Следующее преобразование утверждений демонстрирует, как выполнить операцию And для двух логических утверждений: isEmailNotExist и isSocialAccount. Исходящему утверждению presentEmailSelfAsserted задается значение true, если значения обоих входящих утверждений — true.

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="AndClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isEmailNotExist" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="isSocialAccount" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="presentEmailSelfAsserted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Входящие утверждения:
    • inputClaim1: true.
    • inputClaim2: false.
  • Исходящие утверждения:
    • outputClaim: false.

AssertBooleanClaimIsEqualToValue

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

Элемент TransformationClaimType Тип данных Примечания
InputClaim InputClaim Логическое Утверждение для проверки.
InputParameter valueToCompareTo Логическое Значение для сравнения (true или false).

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

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

Пример AssertBooleanClaimIsEqualToValue

В следующем преобразовании утверждений показано, как проверить значение логического утверждения на основе значения true. Если значение утверждения accountEnabled — false, выдается сообщение об ошибке.

<ClaimsTransformation Id="AssertAccountEnabledIsTrue" TransformationMethod="AssertBooleanClaimIsEqualToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="accountEnabled" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="true" />
  </InputParameters>
</ClaimsTransformation>
  • Входящие утверждения:
    • inputClaim: false.
    • valueToCompareTo: true.
  • Результат: возникла ошибка.

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

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

<TechnicalProfile Id="Example-AssertBoolean">
  <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="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Самоподтвержденный технический профиль вызывает технический профиль проверки Example-AssertBoolean.

<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
  <DisplayName>Example</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="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Custom error message if account is disabled.</Item>
  </Metadata>
  ...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="Example-AssertBoolean" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

CompareBooleanClaimToValue

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

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

Пример CompareBooleanClaimToValue

В следующем преобразовании утверждений показано, как проверить значение логического утверждения на основе значения true. Если значение утверждения IsAgeOver21Years равно true, преобразование утверждений возвращает true, в противном случае — false.

<ClaimsTransformation Id="AssertAccountEnabled" TransformationMethod="CompareBooleanClaimToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="IsAgeOver21Years" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim  ClaimTypeReferenceId="accountEnabled" TransformationClaimType="compareResult"/>
  </OutputClaims>
</ClaimsTransformation>
  • Входящие утверждения:
    • inputClaim: false.
  • Входные параметры:
    • valueToCompareTo: true.
  • Исходящие утверждения:
    • compareResult: false

NotClaims

Вычисляет операцию Not для логического входного утверждения и задает для выходного утверждения результат операции. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

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

Пример NotClaims

Следующее преобразование утверждений демонстрирует, как выполнить логическое отрицание в утверждении.

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="NotClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userExists" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="userExists" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Входящие утверждения:
    • inputClaim: false.
  • Исходящие утверждения:
    • outputClaim: true.

OrClaims

Вычисляет операцию Or для двух логических утверждений и задает для выходного утверждения результат операции. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.

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

Пример OrClaims

Следующее преобразование утверждений демонстрирует, как выполнить операцию Or для двух логических утверждений.

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="OrClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isLastTOSAcceptedNotExists" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="presentTOSSelfAsserted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Входящие утверждения:
    • inputClaim1: true.
    • inputClaim2: false.
  • Исходящие утверждения:
    • outputClaim: true.

Дальнейшие действия