跳到主要内容

用于多因素认证 (MFA) 的短信验证

Logto 支持基于短信的多因素认证 (MFA) 功能,通过向用户注册的手机号发送一次性验证码来增强账户安全性。短信 MFA 作为第二认证 (Authentication) 因素,可以与其他 MFA 因素(如 TOTP、通行密钥、备用码)结合使用,为用户提供灵活的双因素认证 (Authentication) 选项。

概念

短信验证,也称为手机号验证,是最易用的 MFA 方法之一。它利用手机的普及性,通过短信将临时的一次性验证码直接发送到用户设备。与需要额外安装软件的应用程序认证器不同,短信 MFA 利用每部手机都自带的消息基础设施,无需任何设置即可立即为用户提供服务。

配置用于 MFA 的短信验证

步骤 1:配置短信连接器和模板

  1. 进入 控制台 > 连接器 > 邮箱与短信连接器
  2. 选择合适的短信连接器(Twilio、SMS Aero 等)
  3. 配置连接参数
  4. 为 MFA 设置专用用途类型的短信模板
    • MfaVerification 用于 MFA 验证
    • BindMFA 用于绑定 MFA
  5. 测试连接器功能,确保消息能够正常发送
  6. 参考 短信连接器 获取特定服务商的配置说明

步骤 2:为 MFA 启用短信

  1. 进入 控制台 > 多因素认证 (MFA)
  2. 启用“短信验证码”因素。建议将短信 MFA 与其他 MFA 因素(TOTP、通行密钥、备用码)结合使用,以降低对单一因素的依赖。
  3. 配置你偏好的 MFA 策略(必需或可选)
  4. 保存配置更改
重要使用注意事项:
  1. 登录方式限制:短信验证码不能同时作为 登录方式 (1FA) 和 MFA 因素 (2FA) 使用。每个短信实现请选择一种认证 (Authentication) 流程。

  2. 注册方式兼容性:短信验证码可以同时用于注册方式和 MFA。Logto 会根据你选择的 MFA 策略优化终端用户注册流程,避免对同一手机号重复要求短信验证。

  3. 找回密码兼容性:虽然短信验证码可以同时用于 忘记密码 和 MFA,但不推荐这种组合。此配置会降低 MFA 的安全性,因为用户可能通过忘记密码短信验证重置密码,然后用新密码进行主认证 (Authentication) (1FA),再用同一短信方式进行 MFA 验证。

短信 MFA 设置流程

MFA 设置提示可能会在用户注册时或登录后出现,具体取决于你配置的 MFA 策略。用户也可以在其 账户设置页面 启用短信 MFA。

短信 MFA 设置流程受以下因素影响:

  • MFA 主因素数量:如果有多个主因素,用户需选择一个进行配置。主因素指除备用码外的 MFA 方法。
  • 启用备用码:启用后,配置主 MFA 因素后会自动生成备用码,并提示用户保存。
  • 注册标识符配置:如果手机号作为 注册标识符 并在注册时已通过短信验证码验证,系统会自动将该号码绑定为 MFA 因素,无需再次验证。如果存在其他主因素,界面会显示“添加其他两步验证”选项(用户可跳过),同时明确提示 MFA 已启用。
  • 已有用户数据:已有用户在登录后设置 MFA 时,需先完成主认证 (Authentication),再进行 MFA 设置。如果账户已包含已验证的主手机号,设置流程与上述注册标识符情况一致。

以下是三种常见的短信 MFA 绑定场景。

场景 1:手机号仅用于 MFA(典型流程)

当手机号不是注册标识符,仅用于 MFA 时,按标准设置流程进行:

  • 如果只有一个短信 MFA 因素,直接显示该因素的设置界面。
  • 如果有多个主 MFA 因素,显示“设置 MFA”列表页,让用户选择要配置的因素。

示例:

注册:邮箱 + 邮箱验证码 + 密码 | MFA:短信验证码 + 备用码
短信 MFA 设置流程 1-1

注册:邮箱 + 邮箱验证码 + 密码 | MFA:短信验证码 + 通行密钥 + 认证器应用 OTP + 备用码

短信 MFA 设置流程 1-2

场景 2:手机号作为注册标识符已验证

如果手机号是注册标识符,并且用户在注册时已通过短信验证码验证,系统会自动将该号码绑定为 MFA 因素——无需额外验证。

示例:

注册:手机号 + 短信验证码 + 密码 | MFA:短信验证码 + 备用码
短信 MFA 设置流程 2

场景 3:手机号已验证但有多个主因素

如果手机号在注册时已验证(作为注册标识符),但账户有多个主 MFA 因素(如短信加通行密钥或认证器应用),界面会提示用户“添加其他两步验证”。用户可以选择添加其他因素或跳过;提示也会明确告知 MFA 已启用。

示例:

注册:手机号 + 短信验证码 + 密码 | MFA:短信验证码 + 通行密钥 + 认证器应用 OTP + 备用码

短信 MFA 设置流程 3

短信 MFA 验证流程

启用短信 MFA 的用户在登录时,成功完成主认证 (Authentication) (1FA) 后,会被提示使用短信验证码作为第二认证 (Authentication) 因素 (2FA) 验证身份。

如果有多个 MFA 因素可用,用户可从已配置的因素中选择。系统会根据 配置 MFA 中指定的优先级顺序决定优先提示哪个 MFA 因素。

示例:

登录:邮箱地址 + 密码 | MFA:短信验证码(上次使用)/ 认证器应用 OTP / 备用码

短信 MFA 验证流程

错误处理

  1. 手机号未绑定

    • 错误码:session.mfa.mfa_factor_not_enabled
    • 处理方式:引导用户先绑定手机号
  2. 验证码错误

    • 错误码:verification_code.code_mismatch
    • 处理方式:提示用户重新输入,限制重试次数
  3. 验证码已过期

    • 错误码:verification_code.expired
    • 处理方式:提示用户重新获取验证码
  4. 发送频率超限

    • 错误码:connector.rate_limit_exceeded
    • 处理方式:显示等待时间,限制重新发送