常规声明转换
本文举例说明了在 Azure Active Directory B2C (Azure AD B2C) 自定义策略中常规声明转换的使用。 有关详细信息,请参阅声明转换。
CopyClaim
将声明的值复制到另一个声明。 这两个声明必须来自同一类型。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 说明 |
---|---|---|---|
InputClaim | inputClaim | string、int | 要复制的声明类型。 |
OutputClaim | outputClaim | string、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: bob@contoso.com
DoesClaimExist
检查输入声明是否存在,并相应地将输出声明设置为 true
或 false
。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 说明 |
---|---|---|---|
InputClaim | inputClaim | 任意 | 需要验证是否存在的输入声明。 |
OutputClaim | outputClaim | boolean | 调用此声明转换后生成的声明。 |
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
哈希
使用加密盐和机密对提供的纯文本执行哈希。 使用的哈希算法是 SHA-256。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 说明 |
---|---|---|---|
InputClaim | 明文 | 字符串 | 要加密的输入声明 |
InputClaim | 加密盐 | 字符串 | 加密盐参数。 可以使用 CreateRandomString 声明转换创建随机值。 |
InputParameter | randomizerSecret | 字符串 | 指向现有的 Azure AD B2C 策略密钥。 新建一个策略密钥:在 Azure AD B2C 租户中的“管理”下,选择“Identity Experience Framework” 。 选择“策略密钥”,查看租户中可用的密钥。 选择 添加 。 对于“选项”,请选择“手动” 。 提供名称(可能会自动添加前缀 B2C_1A_。)。 在“机密”文本框中,输入要使用的任何机密,如 1234567890。 对于“密钥用法”,请选择“签名” 。 选择“创建”。 |
OutputClaim | hash | 字符串 | 调用此声明转换后生成的声明。 在 plaintext inputClaim 中配置的声明。 |
哈希示例
以下示例演示如何对电子邮件地址进行哈希处理。 声明转换先为电子邮件地址加盐,然后再对值进行哈希处理。 若要调用此声明转换,请设置声明 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
- salt: 487624568
- randomizerSecret: B2C_1A_AccountTransformSecret
- 输出声明:
- outputClaim: CdMNb/KTEfsWzh9MR1kQGRZCKjuxGMWhA5YQNihzV6U=
后续步骤
- 在 Azure AD B2C 社区 GitHub 存储库中查看更多声明转换示例