在 Google Authenticator 应用程序中,您可以扫描 QR 码或手动键入颁发者提供的密钥。
在下面的屏幕截图中,您可以看到 Google Security 设置中的 2FA 设置,显示如何按照第二种方法获取 TOTP。
我的问题是:这个密钥是如何生成的?
我正在尝试使用 Google Authenticator 为我的网站支持 2FA,我发现了许多关于如何生成 QR 码的参考资料和文档,但甚至没有提到替代方法。
编辑:
为了更清楚一点,我在 Grails 3 webapp 中使用 Google Authenticator 支持 2FA。我已经实现了整个用户流程,为每个用户生成一个密钥(Base32
字符串),提供一个二维码供用户扫描,并在登录时验证 TOTP。我用作依赖项:
org.jboss.aerogear:aerogear-otp-java
, aerogear OTP以方便地根据 GA 的 TOTP 验证用户密钥org.grails.plugins:qrcode
, qrcode Grails插件生成二维码
我的问题是关于在 Google Authenticator 应用程序中添加新条目的两种方法:1. 扫描 QR 码(我这边一切正常) 2. 手动输入帐户名称和字母代码(在我的第一个屏幕截图中,代码是在 Google 安全设置中提供)
您可以看到来自 GA for Android 的解释性屏幕截图:
如何生成并向用户提供此类代码(从fzee
第一个屏幕截图开始,并在第二个屏幕截图中命名为“提供的密钥”)?我确定它是同样数据字符串的编码,也编码在 QR 码中,但我不知道是哪个(不简单Base32
)。