Compartir a través de

常规声明转换

本文举例说明了在 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

检查输入声明是否存在,并相应地将输出声明设置为 truefalse。 查看此声明转换的实时演示

元素 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=

后续步骤