Azure AD B2C自定义注册策略强制配置SMS 2FA手机号方案咨询
实现方案
可以实现,全程不需要用到Microsoft Graph Beta API,完全依托Azure AD B2C自定义策略(IEF)的原生能力就能完成,不需要给用户展示手机号输入界面。
核心逻辑是B2C的SMS 2FA模块默认读取系统内置声明strongAuthenticationPhoneNumber作为绑定手机号,只要在MFA步骤执行前把预拉取的手机号写入这个声明,同时移除前端页面的手机号输入控件即可。
具体落地步骤
- 首先配置自定义REST API技术配置文件:在注册用户旅程的用户身份校验(比如校验邀请码/预登记信息)步骤之后,调用你的自有接口拉取对应用户的预存手机号,将接口返回的手机号字段直接映射到内置声明
strongAuthenticationPhoneNumber,不要把这个声明放到任何自断言页面的输出声明列表里,前端就不会渲染手机号输入框。 - 增加格式校验声明转换:在REST API调用完成后,对拿到的手机号做E.164格式校验,格式不合法直接跳错误页,避免后续MFA发码步骤因为号码格式异常报错。
- 调整用户旅程的步骤顺序:把拉取手机号的步骤放在AAD用户写入步骤之前、MFA发码步骤之前,这样用户目录对象创建时,会直接把
strongAuthenticationPhoneNumber的值写入用户的强认证手机号属性,注册完成后2FA绑定就自动生效。 - 保留原有的SMS MFA技术配置步骤即可,该步骤会自动读取已经存在的
strongAuthenticationPhoneNumber声明,直接向预存号码发验证码,不会弹出号码输入/确认界面要求用户操作。
避坑点
- 不要用自定义扩展属性存储2FA绑定手机号,B2C原生的SMS 2FA提供程序不会读取自定义属性的值,只会识别内置的
strongAuthenticationPhoneNumber声明。 - 如果你用的是多流程策略,要确保所有涉及注册的用户旅程都移除了自断言页面中的手机号输出声明,避免部分场景下还是弹出输入框。
- REST API调用必须配置服务端鉴权,避免接口被未授权调用篡改绑定的手机号,生产环境要对手机号做日志脱敏。
内容的提问来源于stack exchange,提问作者Adrian Thompson Phillips
相关产品推荐
相关产品推荐

