你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

布尔型声明转换

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

AndClaims

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

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

AndClaims 示例

以下声明转换演示如何执行两个布尔型声明的 And 运算:isEmailNotExistisSocialAccount。 如果这两个输入声明的值为 true,则输出声明 presentEmailSelfAsserted 设置为 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 boolean 要检查的声明。
InputParameter valueToCompareTo boolean 要比较的值(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 boolean 要比较的声明。
InputParameter valueToCompareTo boolean 要比较的值(true 或 false)。
OutputClaim compareResult boolean 调用此声明转换后生成的声明。

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 boolean 要运算的声明。
OutputClaim outputClaim boolean 调用此声明转换后生成的声明(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 boolean 要评估的第一个声明。
InputClaim inputClaim2 boolean 要评估的第二个声明。
OutputClaim outputClaim boolean 调用此声明转换后将生成的声明(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

后续步骤