重要
自 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=
 
 
后续步骤
- 在 Azure AD B2C 社区 GitHub 存储库中查看更多声明转换示例