You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C如何配置优先取email否则取signInName为输出声明

Azure AD B2C 声明兜底输出实现方案

要实现优先输出email声明、为空时用signInName声明兜底的逻辑,可通过自定义策略的声明转换结合Technical Profile配置完成,操作如下:

1. 新增Coalesce类型声明转换

在策略文件的<ClaimsTransformations>节点下新增如下配置,作用是按优先级取第一个非空的声明值:

<ClaimsTransformation Id="GetValidEmailClaim" TransformationMethod="Coalesce">
  <InputClaims>
    <!-- 优先取email声明的值 -->
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
    <!-- email为空时取signInName的值 -->
    <InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <!-- 输出结果赋值给email声明 -->
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

2. 关联声明转换到目标Technical Profile

找到需要配置的Technical Profile,先在输出声明转换中引入上面新增的转换规则,再配置email的输出规则即可:

<TechnicalProfile Id="你的目标TechnicalProfile的ID">
  <!-- 原有其他配置内容保持不变 -->
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="GetValidEmailClaim" />
    <!-- 原有其他输出声明转换保持不变 -->
  </OutputClaimsTransformations>
  <OutputClaims>
    <!-- 直接配置email输出,必填属性和PartnerClaimType按需求设置 -->
    <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" Required="true" />
    <!-- 原有其他输出声明保持不变 -->
  </OutputClaims>
</TechnicalProfile>

注意事项

  • 需确保策略中已预先定义email和signInName两个声明类型,避免引用报错
  • 如果你的业务中signInName可能包含非邮箱格式的值(如手机号、用户名),可在上述声明转换前新增格式校验逻辑,仅当signInName为邮箱格式时才触发兜底,避免输出非法的email值
  • Coalesce方法支持多输入声明,如有其他兜底的邮箱来源,可按优先级顺序添加到InputClaims节点中

内容的提问来源于stack exchange,提问作者Foramkumar Parekh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 02:54:08