如何在Azure AD B2C中实现注册表单完成后邮箱验证的用户流?
调整Azure AD B2C注册流程:先填表单后验证邮箱
默认的Azure AD B2C用户流无法直接修改邮箱验证的顺序,要实现先完成注册表单再发送验证邮件的逻辑,必须通过**自定义策略(Custom Policies)**来配置,具体步骤如下:
1. 准备自定义策略基础模板
- 从Azure AD B2C官方提供的自定义策略Starter Pack中,下载适配场景的模板(比如
SocialAndLocalAccounts模板,支持本地账号和社交账号注册)。 - 将模板中的XML文件上传到Azure AD B2C门户的「标识体验框架」→「策略文件」中,完成基础自定义策略的部署(注意替换模板中的租户ID、应用ID等占位符)。
2. 调整注册用户旅程的步骤顺序
在自定义策略的XML文件中,找到注册相关的用户旅程(默认是SignUpOrSignIn),修改编排步骤的顺序:
- 先执行收集用户属性的步骤:调用
SelfAssertedAttributeProvider技术配置,显示完整的注册表单,收集姓名、密码等必填信息。 - 再执行邮箱验证的步骤:调用
EmailVerification技术配置,触发发送含确认链接的验证邮件。
示例XML片段(调整后的核心编排步骤):
<UserJourney Id="SignUpOrSignIn"> <OrchestrationSteps> <!-- 步骤1:初始化登录/注册入口 --> <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin"> <ClaimsProviderSelections> <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" /> </ClaimsProviderSelections> <ClaimsExchanges> <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> </ClaimsExchanges> </OrchestrationStep> <!-- 步骤2:收集注册表单信息 --> <OrchestrationStep Order="2" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> <Value>objectId</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" /> </ClaimsExchanges> </OrchestrationStep> <!-- 步骤3:发送邮箱验证邮件 --> <OrchestrationStep Order="3" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> <Value>objectId</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="EmailVerificationExchange" TechnicalProfileReferenceId="EmailVerification" /> </ClaimsExchanges> </OrchestrationStep> <!-- 后续步骤:创建用户、颁发令牌等 --> </OrchestrationSteps> </UserJourney>
3. 配置技术配置文件细节
- 确保
LocalAccountSignUpWithLogonEmail技术配置文件(属于SelfAssertedAttributeProvider类型)中,仅收集用户属性,不提前触发邮箱验证。 - 配置
EmailVerification技术配置文件,设置邮件模板、验证链接有效期等参数,确保用户提交表单后才发送验证邮件。
4. 测试自定义策略
- 在Azure AD B2C门户中创建测试应用,关联该自定义策略。
- 启动注册流程,验证是否先显示完整的注册表单,提交后收到邮箱验证链接,点击链接完成注册。
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

