重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
本文提供了有关在 Azure Active Directory B2C(Azure AD B2C)中使用标识体验框架架构的整数声明转换的示例。 有关详细信息,请参阅 ClaimsTransformations。
AdjustNumber
增加或减少数字声明并返回新声明。 查看此声明转换的实时演示。
| 元素 | TransformationClaimType | 数据类型 | 注释 | 
|---|---|---|---|
| InputClaim | inputClaim | 整数 (int) | 声明类型,其中包含要增加或减少的数字。 
              inputClaim如果声明值为 null,则使用默认值 0。 | 
| InputParameter | 操作员 | 字符串 | 可能的值为 INCREMENT(默认)或 DECREMENT。 | 
| OutputClaim | outputClaim | 整数 (int) | 调用此声明转换后生成的声明类型。 | 
AdjustNumber 的示例
使用此声明转换可增加或减少数值声明值。 以下声明转换会增加数值声明值。
<ClaimsTransformation Id="UpdateSteps" TransformationMethod="AdjustNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="steps" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="INCREMENT" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="steps" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
- 输入声明:
- inputClaim:1
 
 - 输入参数:
- 运算符:INCREMENT
 
 - 输出声明:
- outputClaim: 2
 
 
具有 null 值的 AdjustNumber 示例
如果输入声明为 null,则输出声明将是一个。
- 输入声明:
- inputClaim: NULL
 
 - 输入参数:
- 运算符:INCREMENT
 
 - 输出声明:
- outputClaim:1
 
 
AssertNumber
确定数字声明是大于、小于、等于还是不等于数字。 查看此声明转换的实时演示。
| 元素 | TransformationClaimType | 数据类型 | 注释 | 
|---|---|---|---|
| InputClaim | inputClaim | 整数 (int) | 要比较的第一个数字声明是大于、小于、等于还是不等于第二个数字。 Null 值会引发异常。 | 
| InputParameter | CompareToValue | 整数 (int) | 要比较的第二个数字是大于、小于、等于还是不等于第一个数字。 | 
| InputParameter | 操作员 | 字符串 | 可能的值:LessThan、、GreaterThan、GreaterThanOrEqualLessThanOrEqual、Equal、 NotEqual。 | 
| InputParameter | throwError | 布尔 | 指定如果比较结果为 true,则此断言是否应引发错误。 可能的值为 true(默认)或 false。 如果设置为 true (断言模式),并且比较结果为 true,将引发异常。 
              false 设置为 (评估模式)时,结果为值为true或false值的新布尔声明类型。 | 
| OutputClaim | outputClaim | 布尔 | 如果 ThrowError 设置为 false,则此输出声明包含 true或 false 根据比较结果。 | 
断言模式
输入参数为 throwError (默认值)时true,AssertNumber 声明转换始终从由自断言技术配置文件调用的验证技术配置文件执行。
AssertNumberError 自断言技术配置文件元数据控制技术配置文件向用户显示的错误消息。 可以将错误消息本地化。
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
  <Metadata>
    <Item Key="AssertNumberError">You've reached the maximum logon attempts</Item>
  </Metadata>
  ...
</TechnicalProfile>
有关如何在断言模式下调用声明转换的详细信息,请参阅 AssertStringClaimsAreEqual、 AssertBooleanClaimIsEqualToValue 和 AssertDateTimeIsGreaterThan 声明转换。
AssertNumber 的示例
以下示例断言尝试次数超过 5 次。 声明转换根据比较结果引发错误。
<ClaimsTransformation Id="isOverLimit" TransformationMethod="AssertNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="attempts" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="GreaterThan" />
    <InputParameter Id="CompareToValue" DataType="int" Value="5" />
    <InputParameter Id="throwError" DataType="boolean" Value="true" />
  </InputParameters>
</ClaimsTransformation>
- 输入声明:
- inputClaim:10
 
 - 输入参数:
- 运算符:GreaterThan
 - CompareToValue:5
 - throwError: true
 
 - 结果:引发错误
 
AssertNumber 评估模式的示例
以下示例评估尝试次数是否超过 5 次。 输出声明根据比较结果包含布尔值。 声明转换不会引发错误。
<ClaimsTransformation Id="isOverLimit" TransformationMethod="AssertNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="attempts" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="GreaterThan" />
    <InputParameter Id="CompareToValue" DataType="int" Value="5" />
    <InputParameter Id="throwError" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="attemptsCountExceeded" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
- 输入声明:
- inputClaim:10
 
 - 输入参数:
- 运算符:GreaterThan
 - CompareToValue:5
 - throwError: false
 
 - 输出声明:
- outputClaim: true
 
 
ConvertNumberToStringClaim
将长数据类型转换为字符串数据类型。 查看此声明转换的实时演示。
| 元素 | TransformationClaimType | 数据类型 | 注释 | 
|---|---|---|---|
| InputClaim | inputClaim | 长整型 | 要转换为字符串的声明类型。 | 
| OutputClaim | outputClaim | 字符串 | 调用此声明转换后生成的声明类型。 | 
ConvertNumberToStringClaim 的示例
在此示例中, numericUserId 具有长值类型的声明将 UserId 转换为具有值类型的字符串的声明。
<ClaimsTransformation Id="CreateUserId" TransformationMethod="ConvertNumberToStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="numericUserId" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="UserId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
- 输入声明:
- inputClaim: 12334 (long)
 
 - 输出声明:
- outputClaim: “12334” (string)
 
 
后续步骤
- 在 Azure AD B2C 社区 GitHub 存储库中查看更多声明转换示例