Преобразования логических утверждений
В этой статье приведены примеры использования преобразований логических утверждений схемы инфраструктуры процедур идентификации в 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 управляют сообщением, поступающим пользователю из технического профиля. Сообщения об ошибках можно локализовать.
Пример 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.
Дальнейшие действия
- Дополнительные примеры преобразования утверждений можно найти в репозитории сообщества Azure AD B2C в GitHub.