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

Azure AD B2C仅本地账户自定义策略能否用邮箱替代UPN登录

仅本地账户Azure AD B2C自定义策略(无注册)邮箱登录修改步骤

以下修改完全适配仅保留本地账户登录、无自助注册流程的策略场景,无需引入额外冗余逻辑:

1. 声明架构调整

在基础策略的<ClaimsSchema>节点中做如下配置:

  • 启用signInNames.emailAddress声明,添加如下定义(已有则跳过冲突配置即可):
<ClaimType Id="signInName">
  <DisplayName>邮箱地址</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>请输入账户绑定的邮箱地址</UserHelpText>
  <UserInputType>EmailBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.!#$%&amp;'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="请输入合法的邮箱格式" />
  </Restriction>
</ClaimType>
  • 禁用原signInNames.userName(UPN关联字段)的默认输入限制,避免策略优先读取用户名作为登录标识

2. 登录技术配置文件修改

找到本地账户登录对应的技术配置文件(默认ID为SelfAsserted-LocalAccountSignin-Email):

  • 将<InputClaims>节点下的signInName声明关联到邮箱字段,移除UPN相关的输入声明
  • 将<ValidationTechnicalProfiles>中调用的用户查询逻辑,从原UPN查询替换为邮箱查询,引用AAD-UserReadUsingEmailAddress技术配置文件即可:
<ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingEmailAddress" />

如果策略中没有该技术配置文件,可新增对应配置,将查询条件设置为signInNames.emailAddress eq {signInName},返回用户objectId、密码哈希等必要认证声明即可

3. 前端展示调整

在内容定义或本地化资源中,将登录页原“用户名”字段的提示文字修改为“邮箱地址”,移除所有注册、用户名设置相关的页面元素,匹配无注册功能的需求

4. 前置数据校验

修改正式上线前,确认所有存量本地账户的signInNames.emailAddress字段都已绑定有效、无重复的邮箱,避免现有用户登录时匹配失败。测试时确认认证流程不再校验UPN后缀,仅验证邮箱和密码的匹配性即可

注意:如果你的租户此前默认要求UPN作为登录标识,需要先批量将存量用户的绑定邮箱同步到signInNames.emailAddress属性,再上线修改后的策略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 22:54:03