重要
自 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>
- 输入声明:
- inputClaim: bob@contoso.com
- 输出声明:
- outputClaim:
检查 input 声明是否存在,并相应地将 output claim 设置为 true
or false
。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 注释 |
---|---|---|---|
InputClaim | inputClaim | 任意 | 需要验证其存在的 input 声明。 |
OutputClaim | outputClaim | 布尔 | 调用此声明转换后生成的声明。 |
使用此声明转换来检查声明是否存在或包含任何值。 返回值是一个布尔值,指示声明是否存在。 以下示例检查电子邮件地址是否存在。
<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 存储库中查看更多声明转换示例