扫描QR码不与IOS上的Google authenticator一起工作



我正在创建这个qr码URL:

otpauth://totp/TEST:asfadsf?secret=CBPhavYImNauHrVP9KuoR5eE2fO-b_7s&issuer=TEST&algorithm=SHA-1&digits=6&period=30

如果我在ios上使用google authenticator扫描此代码,我将得到消息:

"代码不是有效的身份验证令牌">

我的二维码有问题吗?

我有类似的问题,并像下面这样修复它们:

1。发行人:

我不发送发行者和用户与":"我只添加了用户名。发行人信息已经提供了&issuer="…">

2。秘密:

secret需要是一个base32 (RFC 3548/4648)字符串。这基本上意味着由以下字符生成:">ABCDEDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz234567">

下面是一个根据需要生成随机秘密的函数:

generateRandomSecretTFA(length = 32) {
let randomBytes = itf.generateRandomBytes(length); // function from node.js crypto module generating random bytes
let rfc3548chars = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghijklmnopqrstuvwxyz234567';
let secret = '';
for (let i = 0, l = randomBytes.length; i < l; i++) {
secret += rfc3548chars[Math.floor(randomBytes[i] / 255.0 * (rfc3548chars.length - 1))];
}
return secret;
},

3。算法:

它在我这边工作了一段时间,像你一样发送它&algorithm=SHA-1。然后不知何故,它不会,我不得不发送它像&algorithm=SHA1。但无论如何,SHA-1/SHA1是Google Authenticator使用的默认算法所以我不再发送它了

我现在生成Google Authenticator可读的otpath,就像这样:

otpauth://totp/test?secret=QePxfLm3PViiJvE2HCRNIsGxmdOJD5KP&issuer=Test&digits=6&period=30

我把我的建议评论到你的例子:

otpauth://totp/TEST:asfadsf?secret=CBPhavYImNauHrVP9KuoR5eE2fO-b_7s&issuer=TEST&algorithm=SHA-1&digits=6&period=30
__________/        ______________________________/             _____________/
|                               |                                   +----------> 3.)
|                               +----------------------------------------------> 2.)
+------------------------------------------------------------------------------> 1.)

最新更新