azure-ad-b2c - 细分注册过程以允许稍后进行电子邮件验证
问题描述
我们将 Azure B2C 用于身份提供程序,但很明显,用户发现该过程有点笨拙。这主要是因为注册过程的同步性质。
我们确实想要验证电子邮件地址和 MFA 电话号码,但理想情况下不是在输入它们的时候。有没有办法我们可以利用图形 API 调用来处理这个问题,或者使用自定义策略来实现相同的目标?
我们还希望将注册/登录过程明确分开。这样用户可以直接被引导到这些页面,并且它们也可以被标记。
解决方案
您可能可以使用两个自定义策略来实现这一点:
- 一种注册策略,提示新客户输入电子邮件地址和电话号码,并创建一个新用户并将这些标记为未验证。可以在帐户创建步骤调用此自定义策略。
- 一种验证策略,通过内置电子邮件验证未经验证的电子邮件地址,然后通过内置电话或短信验证未经验证的电话号码。可以在“应用程序完成”步骤调用此自定义策略。
请注意,发送验证码的不是注册策略,而是发送验证码的验证策略。我不知道这对于所需体验是否可以接受,但发送验证码的自定义策略必须与验证它的策略相同。
(有一个替代流程,在注册策略完成后,您的最终应用程序会发送一封自定义电子邮件,其中包含一个验证链接,当最终用户打开该链接时,您的最终应用程序会验证该链接,然后验证策略 -减去电子邮件验证步骤,因为电子邮件地址已经被验证 - 开始)。
如果您对这个提议的解决方案感兴趣,那么我可以尝试提供基于自定义策略启动包之一的自定义策略的完整详细信息。
更新于 2019 年 2 月 15 日
我已将以下自定义策略示例发布到此 GitHub 存储库。第二和第三个政策执行上述流程。
注册登录
使用电子邮件地址和电话号码注册本地帐户。提示最终用户验证电子邮件地址和电话号码。
使用电子邮件地址或电话号码登录本地帐户。如果尚未验证电子邮件地址,则会提示最终用户验证电子邮件地址。如果电话号码尚未验证,则提示最终用户验证电话号码。
sign_up_without_verification
使用电子邮件地址和电话号码注册本地帐户。不会提示最终用户验证电子邮件地址或电话号码。
sign_in_with_verification
使用电子邮件地址或电话号码登录本地帐户。如果尚未验证电子邮件地址,则会提示最终用户验证电子邮件地址。如果电话号码尚未验证,则提示最终用户验证电话号码。
推荐阅读
- excel - 从条形图中删除#NV 标签
- java - EntityManager 在 Junit 测试中给出 NullPointerException
- asynchronous - 将异步数据(GPS 协调)从 FutureBuilder 传递给提供者/设置异步构造函数
- security - 使用 SSL 保护站点端口 8443
- junit - 无法使用 Cucumber 运行场景大纲功能
- ios - iOS - 如何在使用 cocoapods 开发框架期间管理框架的依赖关系?
- flutter - 什么是飞镖(?。)符号指的是?
- c++ - 如何多次使用 Clang LibTooling
- react-native - 从安全的角度来看,在 React Native 中使用 WebView 好不好?
- php - Laravel 5.8 试图获取非对象的属性'unreadNotifications'