双因素认证在密码之上增加第二重证明:通过用户所控制的渠道发送一次性验证码。使用 Bird Verify,只需在登录时发起一次发送调用,在用户输入验证码时发起一次校验调用——目前支持 SMS、WhatsApp 或电子邮件,按国家配置渠道,两次调用之间无需存储任何数据。
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Send the code, then check it by recipient.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
}).safe();
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: userInput,
}).safe();2FA 就是指向登录场景的验证流程。
在底层,2FA 使用的是 Bird Verify API 在各处运行的同一套流程:在用户登录时为其手机号或邮箱创建验证,然后校验用户输入的验证码。由于校验基于接收方,您的登录处理程序无需维护任何请求级状态,用户收到验证码的渠道由您的按国家配置决定,而非硬编码在流程中。去掉前面的密码步骤,同一套流程就变成了无密码登录。
2FA 的接入内容。
两次调用加一份配置。
- 01
登录时发送,提交时校验。
当用户通过第一重因素认证后创建验证;用户输入验证码时进行校验。这就是全部的集成工作。
- 02
SMS、WhatsApp 或电子邮件作为验证因素。
使用您已有的用户渠道:通过 SMS 或 WhatsApp 发送到手机号,通过电子邮件发送到邮箱。语音渠道即将推出,提供更多选择。
- 03
按应用独立配置。
为登录、注册和高价值操作分别维护独立配置,每套配置拥有自己的验证码规则和渠道方案。
- 04
暴力破解受到限制。
内置尝试次数锁定和按接收方的发送频率限制,确保第二重因素不会成为新的攻击面。
登录时的验证流程。
密码验证通过后发送验证码;用户提交时进行校验。验证码错误是一个可供分支判断的结果,而非需要捕获的异常。
// Send the second factor once the password checks out.
await bird.verify.verifications.create({
to: { phone_number: user.phone },
}).safe();
const { data } = await bird.verify.verifications.check({
to: { phone_number: user.phone },
code: submitted,
}).safe();
if (data.result) grantSession(user);2FA 常见问题
2FA 和 MFA 有什么区别?+
第二重因素应该使用哪个渠道?+
添加 2FA 是否意味着需要存储验证状态?+
用户看到的验证码来自谁?+
双重身份验证,与您的其他渠道共用同一 API。
Bird Verify 是您登录和注册流程中基于验证码的身份验证方式——现已支持 SMS、电子邮件和 WhatsApp,语音通道即将上线。