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

如何创建允许用户先设密码再验证邮箱的B2C自定义策略?

Azure AD B2C自定义策略:先创建密码后验证邮箱的调整方法

核心逻辑反转

原流程是「邮箱验证→密码设置→用户创建」,需调整为「邮箱+密码输入→密码设置→用户创建(邮箱未验证状态)→邮箱验证→标记邮箱已验证」,核心是调整步骤顺序并处理用户状态的更新。

具体调整步骤

  • 调整用户旅程步骤顺序
    找到策略中的<UserJourneys>节点,定位注册流程对应的<UserJourney>。将原流程里的邮箱验证环节(包含SendVerificationEmail和VerifyEmail的步骤),移至密码收集、用户创建步骤之后。
    示例流程变更:

    原:显示注册页(仅邮箱)→ 验证邮箱 → 收集密码 → 创建用户
    新:显示注册页(邮箱+密码)→ 收集并验证密码 → 创建用户(emailVerified=false)→ 发送验证邮件 → 验证邮箱 → 更新emailVerified为true

  • 修改自断言页面配置
    找到注册用的自断言技术配置文件(如SelfAsserted-LocalAccountSignup-Email),在<InputClaims>中同时添加邮箱和密码输入字段,让用户可在同一页面提交两者。移除该配置文件中前置的邮箱验证逻辑(即<ValidationTechnicalProfiles>里的VerifyEmail步骤)。

  • 调整用户创建技术配置
    确保LocalAccountWritePasswordUsingObjectId技术配置文件允许在邮箱未验证的情况下写入用户数据。此时用户的emailVerified属性会被默认设为false,后续验证完成后再更新。

  • 添加创建后的邮箱验证流程
    在用户创建步骤之后,依次添加两个步骤:

    1. 调用SendVerificationEmail技术配置文件发送验证邮件;
    2. 调用VerifyEmail技术配置文件让用户输入验证码完成验证;
    3. 验证通过后,调用AAD-UserWriteUsingObjectId技术配置文件,将用户的emailVerified属性更新为true。
  • 处理登录时的未验证情况
    在登录流程的用户旅程中添加检查逻辑:若用户的emailVerified为false,则自动跳转至邮箱验证环节,完成后才能进入应用。

注意事项

  • 保留原有的密码复杂度验证规则,确保密码输入环节的安全性;
  • 邮箱验证环节需保持原有的防重复发送、验证码过期等逻辑;
  • 测试时需覆盖「注册后完成验证」「注册后未验证直接登录」两种场景,确保流程顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:08:18