布尔声明转换

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

本文提供了有关在 Azure Active Directory B2C(Azure AD B2C)中使用标识体验框架架构的布尔声明转换的示例。 有关详细信息,请参阅声明转换

AndClaims

计算两个 And 布尔输入声明的作,并使用作的结果设置输出声明。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim inputClaim1 布尔 要评估的第一个声明。
InputClaim inputClaim2 布尔 要评估的第二个声明。
OutputClaim outputClaim 布尔 调用此声明转换后生成的声明(true 或 false)。

AndClaims 的示例

以下声明转换演示如何 And 两个布尔声明: isEmailNotExistisSocialAccount。 输出声明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

检查声明的布尔值是否等于 truefalse返回压缩结果。 查看此声明转换的实时演示

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

后续步骤