我必须使用哪些数据为Google身份验证器生成QR码?

时间:2014-02-21 20:30:25

标签: node.js qr-code google-authenticator

我想在我们的应用程序中使用Google Authenticator应用程序进行登录。

我正在使用speakeasy生成身份验证的基础数据。它还可以向生成QR码的Google网站发送一个URL,我可以使用Google身份验证器扫描该代码来设置该方案。

我想自己生成QR码,主要是因为我想使用qrcode-terminal在控制台中显示它。

我需要在QR码中编码哪些数据才能使其正常工作?

2 个答案:

答案 0 :(得分:9)

您必须编码的字符串是:

otpauth://totp/ApplicationName?secret= + key.base32
  • ApplicationName是您希望在Google身份验证器中显示的应用程序的名称。

您的实现看起来像这样:

var key = speakeasy.generate_key( {length : 20} );
qrcode.generate( "otpauth://totp/foo?secret=" + key.base32, function( qrcode ) {
  console.log( qrcode );
} );

格式上还有official documentation

答案 1 :(得分:2)

  

我需要在QR码中编码哪些数据才能使其正常工作?

Google身份验证器有一个wikiKeyUriFormat有以下示例:

  

为用户" alice@google.com"提供TOTP密钥,以便与。一起使用   Example,Inc提供的服务:

     ?

otpauth:// TOTP /实施例:alice@google.com秘密= JBSWY3DPEHPK3PXP&安培;发行人=实施例

     

这个Base32编码密钥" JBSWY3DPEHPK3PXP"有价值:

     

byte[] key = { 'H', 'e', 'l', 'l', 'o', '!', (byte) 0xDE, (byte) 0xAD, (byte) 0xBE, (byte) 0xEF };

在开头和结尾(与发行人)一起使用公司名称("示例")很重要。有关详细信息,请参阅ConflictingAccounts