ClaimsTransformations

注意

在 Azure Active Directory B2C 中,自定义策略主要用于解决复杂的情况。 在大多数情况下,建议你使用内置用户流。 如果尚未这样做,请从 Active Directory B2C 中的自定义策略入门了解自定义策略新手包。

ClaimsTransformations 元素包含一个可在用户旅程中用作自定义策略的一部分的声明转换函数列表。 声明转换可以将给定声明转换为另一个声明。 在声明转换中,指定转换方法,例如将项添加到一个字符串集合或更改字符串的大小写。

若要包含可在用户旅程中使用的声明转换函数的列表,必须在策略的 BuildingBlocks 部分下声明 ClaimsTransformations XML 元素。

<ClaimsTransformations>
  <ClaimsTransformation Id="<identifier>" TransformationMethod="<method>">
    ...
  </ClaimsTransformation>
</ClaimsTransformations>

ClaimsTransformation 元素包含以下属性:

属性 必须 描述
ID 用于唯一标识声明转换的标识符。 从策略中的其他 XML 元素引用此标识符。
TransformationMethod 用于声明转换的转换方法。 每个声明转换都有其自己的值。 有关可用值的完整列表,请参阅声明转换引用

ClaimsTransformation

ClaimsTransformation 元素包含以下元素:

<ClaimsTransformation Id="<identifier>" TransformationMethod="<method>">
  <InputClaims>
    ...
  </InputClaims>
  <InputParameters>
    ...
  </InputParameters>
  <OutputClaims>
    ...
  </OutputClaims>
</ClaimsTransformation>
元素 出现次数 说明
InputClaims 0:1 InputClaim 元素列表,这些元素用于指定被看作声明转换输入的声明类型。 每个元素都包含对在策略的 ClaimsSchema 部分定义的 ClaimType 的引用。
InputParameters 0:1 InputParameter 元素列表,这些元素作为声明转换输入提供。
OutputClaims 0:1 OutputClaim 元素列表,这些元素用于指定在调用 ClaimsTransformation 后生成的声明类型。 每个元素都包含对在 ClaimsSchema 部分定义的 ClaimType 的引用。

InputClaims

InputClaims 元素包含以下元素:

元素 出现次数 说明
InputClaim 1:n 预期的输入声明类型。

InputClaim

InputClaim 元素包含以下属性:

Attribute 必须 说明
ClaimTypeReferenceId 对在策略的 ClaimsSchema 部分定义的 ClaimType 的引用。
TransformationClaimType 用于引用转换声明类型的标识符。 每个声明转换都有其自己的值。 有关可用值的完整列表,请参阅声明转换引用

InputParameters

InputParameters 元素包含以下元素:

元素 出现次数 说明
InputParameter 1:n 预期的输入参数。

InputParameter

属性 必须 描述
ID 是对声明转换方法的参数的引用的标识符。 每个声明转换方法都有其自己的值。 有关可用值的完整列表,请参阅声明转换表。
数据类型 参数的数据类型,例如根据自定义策略 XML 架构中的 DataType 枚举的字符串、布尔值、Int 或 DateTime。 此类型用于正确执行算术操作。 每个声明转换都有其自己的值。 有关可用值的完整列表,请参阅声明转换引用
Value 将逐字字符串传递到传递的一个值。 某些值是任意的,某些值是从声明转换方法中选择的。

OutputClaims

OutputClaims 元素包含以下元素:

元素 出现次数 说明
OutputClaim 0:n 预期的输出声明类型。

OutputClaim

OutputClaim 元素包含以下属性:

Attribute 必须 说明
ClaimTypeReferenceId 对在策略的 ClaimsSchema 部分定义的 ClaimType 的引用。
TransformationClaimType 用于引用转换声明类型的标识符。 每个声明转换都有其自己的值。 有关可用值的完整列表,请参阅声明转换引用

声明转换中使用的输入和输出声明必须是独一无二的。 同一输入声明不能用作输出声明。

示例

例如,可能会存储用户接受的上一版本的服务条款。 更新服务条款时,可以请求用户接受新版本。 在以下示例中,HasTOSVersionChanged 声明将 TOSVersion 声明的值与 LastTOSAcceptedVersion 声明的值进行比较,然后返回布尔 TOSVersionChanged 声明。

<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="TOSVersionChanged">
      <DisplayName>Indicates if the TOS version accepted by the end user is equal to the current version</DisplayName>
      <DataType>boolean</DataType>
    </ClaimType>
    <ClaimType Id="TOSVersion">
      <DisplayName>TOS version</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    <ClaimType Id="LastTOSAcceptedVersion">
      <DisplayName>TOS version accepted by the end user</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
  </ClaimsSchema>

  <ClaimsTransformations>
    <ClaimsTransformation Id="HasTOSVersionChanged" TransformationMethod="CompareClaims">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="TOSVersion" TransformationClaimType="inputClaim1" />
        <InputClaim ClaimTypeReferenceId="LastTOSAcceptedVersion" TransformationClaimType="inputClaim2" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="TOSVersionChanged" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
  </ClaimsTransformations>
</BuildingBlocks>

声明转换引用

有关声明转换的示例,请参阅以下引用页: