常规声明转换

重要

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

本文提供了使用 Azure Active Directory B2C (Azure AD B2C) 自定义策略的常规声明转换的示例。 有关详细信息,请参阅声明转换

复制索赔

将索赔的值复制到另一个索赔。 两个声明必须来自同一类型。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim inputClaim 字符串, int 要复制的声明类型。
OutputClaim outputClaim 字符串, int 调用此声明转换后生成的声明。

使用此声明转换将值从字符串或数字声明复制到另一个声明。 以下示例将 externalEmail 声明值复制到 email 声明。

<ClaimsTransformation Id="CopyEmailAddress" TransformationMethod="CopyClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="externalEmail" TransformationClaimType="inputClaim"/>
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim"/>
  </OutputClaims>
</ClaimsTransformation>

CopyClaim 示例

  • 输入声明:
    • inputClaim: bob@contoso.com
  • 输出声明:
    • outputClaim:

DoesClaimExist

检查 input 声明是否存在,并相应地将 output claim 设置为 true or false 。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim inputClaim 任意 需要验证其存在的 input 声明。
OutputClaim outputClaim 布尔 调用此声明转换后生成的声明。

DoesClaimExist 示例

使用此声明转换来检查声明是否存在或包含任何值。 返回值是一个布尔值,指示声明是否存在。 以下示例检查电子邮件地址是否存在。

<ClaimsTransformation Id="CheckIfEmailPresent" TransformationMethod="DoesClaimExist">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isEmailPresent" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim: someone@contoso.com
  • 输出声明:
    • outputClaim: true

哈希

使用 salt 和 secret 对提供的纯文本进行哈希处理。 使用的哈希算法是 SHA-256。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim 明文 字符串 要加密的 input 声明
InputClaim 字符串 salt 参数。 您可以使用 CreateRandomString claims 转换创建随机值。
InputParameter randomizerSecret 字符串 指向现有的 Azure AD B2C 策略密钥。 若要创建新的策略密钥,请执行以下作:在 Azure AD B2C 租户的 “管理”下,选择 “Identity Experience Framework”。 选择 Policy keys (策略密钥 ) 以查看租户中可用的密钥。 选择 并添加。 对于 “选项”,请选择“ 手动”。 提供名称(前缀 B2C_1A_ 可能会自动添加。 在 Secret (密钥 ) 文本框中,输入要使用的任何密钥,例如 1234567890。 对于“密钥用法”,请选择“签名”。 选择 创建
OutputClaim 散 列 字符串 调用此声明转换后生成的声明。 在 inputClaim 中 plaintext 配置的声明。

哈希示例

以下示例演示如何对电子邮件地址进行哈希处理。 声明转换在对值进行哈希处理之前将盐添加到电子邮件地址。 若要调用此声明转换,请为 mySalt 声明设置一个值。

<ClaimsTransformation Id="HashPasswordWithEmail" TransformationMethod="Hash">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="plaintext" />
    <InputClaim ClaimTypeReferenceId="mySalt" TransformationClaimType="salt" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="randomizerSecret" DataType="string" Value="B2C_1A_AccountTransformSecret" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="hashedEmail" TransformationClaimType="hash" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • plaintext 中: someone@contoso.com
    • : 487624568
    • randomizerSecret:B2C_1A_AccountTransformSecret
  • 输出声明:
    • outputClaim: CdMNb/KTEfsWzh9MR1kQGRZCKjuxGMWhA5YQNihzV6U=

后续步骤