我的 nodeJS 服务器应用程序中有一个 2FA 代码,它利用 speakeasy 模块来验证传递的密钥是否有效。我在客户端使用 google Authenticator 应用程序。我正在使用密钥 =“A0B0C0D0E0F0A1B1C1D1E1F2”。这适用于 Android 设备。但是,当我在 Iphone 上尝试相同的操作时,我会遇到以下问题:
- Iphone 上的 Google Authenticator 应用程序不允许我添加秘密“A0B0C0D0E0F0A1B1C1D1E1F2”。似乎它有一些关于密钥的本机规则。
- 即使我输入了 Iphone 允许的密钥,speakeasy.totp 代码也无法验证,并且总是返回 FALSE。
secretKey = "A0B0C0D0E0F0A1B1C1D1E1F2";
var verified = speakeasy.totp.verify({
secret: secretKey,
encoding: 'base32',
token: userToken
});
if(!verified) {
// verification failed
} else {
// verification ok
}
如何解决此问题以使其在 Android 和 Iphone 设备上都可以使用?
注意:该应用程序仍在测试区域中。prod 中的密钥将存储在永久存储/数据库中。
谢谢。