重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
注释
在 Azure Active Directory B2C 中,自定义策略 主要用于解决复杂场景。 对于大多数场景,我们建议您使用内置的用户流。 如果未这样做,请通过 Active Directory B2C 中的自定义策略入门来了解自定义策略初学者包。
ClaimsTransformations 元素包含可在用户旅程中用作自定义策略一部分的声明转换函数的列表。 声明转换可以将给定声明转换为另一个声明。 在声明转换中,指定转换方法,例如将项添加到字符串集合或更改字符串大小写。
若要包含可在用户旅程中使用的声明转换函数列表,必须在策略的 BuildingBlocks 节下声明 ClaimsTransformations XML 元素。
<ClaimsTransformations>
<ClaimsTransformation Id="<identifier>" TransformationMethod="<method>">
...
</ClaimsTransformation>
</ClaimsTransformations>
ClaimsTransformation 元素包含以下属性:
特征 | 必选 | DESCRIPTION |
---|---|---|
ID | 是的 | 用于唯一标识声明转换的标识符。 该标识符是从策略中的其他 XML 元素引用的。 |
TransformationMethod | 是的 | 在声明转换中使用的转换方法。 每个声明转换都有自己的值。 有关可用值的完整列表,请参阅 声明转换参考 。 |
ClaimsTransformation
ClaimsTransformation 元素包含以下元素:
<ClaimsTransformation Id="<identifier>" TransformationMethod="<method>">
<InputClaims>
...
</InputClaims>
<InputParameters>
...
</InputParameters>
<OutputClaims>
...
</OutputClaims>
</ClaimsTransformation>
元素 | 出现次数 | DESCRIPTION |
---|---|---|
InputClaims | 0:1 | 指定作为声明转换输入的声明类型的 InputClaim 元素的列表。 其中每个元素都包含对策略的 ClaimsSchema 节中已定义的 ClaimType 的引用。 |
InputParameters | 0:1 | 作为声明转换的输入提供的 InputParameter 元素的列表。 |
OutputClaims | 0:1 | 一个 OutputClaim 元素列表,这些元素指定在调用 ClaimsTransformation 后生成的声明类型。 其中每个元素都包含对 ClaimsSchema 节中已定义的 ClaimType 的引用。 |
InputClaims
InputClaims 元素包含以下元素:
元素 | 出现次数 | DESCRIPTION |
---|---|---|
InputClaim | 1:n | 预期的输入声明类型。 |
InputClaim
InputClaim 元素包含以下属性:
特征 | 必选 | DESCRIPTION |
---|---|---|
索赔类型参考编号 | 是的 | 对已在策略的 ClaimsSchema 节中定义的 ClaimType 的引用。 |
TransformationClaimType | 是的 | 用于引用转换声明类型的标识符。 每个声明转换都有自己的值。 有关可用值的完整列表,请参阅 声明转换参考 。 |
InputParameters
InputParameters 元素包含以下元素:
元素 | 出现次数 | DESCRIPTION |
---|---|---|
InputParameter | 1:n | 预期输入参数。 |
InputParameter
特征 | 必选 | DESCRIPTION |
---|---|---|
ID | 是的 | 一个标识符,它是对声明转换方法的参数的引用。 每个声明转换方法都有自己的值。 有关可用值的完整列表,请参阅声明转换表。 |
数据类型 | 是的 | 参数的类型,如 String、Boolean、Int 或 DateTime,根据自定义策略 XML 架构中的 DataType 枚举。 此类型用于正确执行算术运算。 每个声明转换都有自己的值。 有关可用值的完整列表,请参阅 声明转换参考 。 |
价值 | 是的 | 将逐字传递给转换的值。 某些值是任意的,从声明转换方法中选择的一些值。 |
OutputClaims
OutputClaims 元素包含以下元素:
元素 | 出现次数 | DESCRIPTION |
---|---|---|
OutputClaim | 0:n | 预期的输出声明类型。 |
OutputClaim
OutputClaim 元素包含以下属性:
特征 | 必选 | DESCRIPTION |
---|---|---|
索赔类型参考编号 | 是的 | 对已在策略的 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>
声明转换参考
有关声明转换的示例,请参阅以下参考页: