我们的网站既可以从桌面打开,也可以从移动设备打开。当用户在桌面上设置 MFA 时,他们可以使用手机摄像头直接从 PC 屏幕上扫描二维码。但是当他们在移动设备上登录时,他们很难在当前使用的同一设备上扫描二维码。我检查了 Google 在帐户设置中的操作方式(通过 Android 上的 Chrome 登录):
因此,默认情况下,他们建议扫描 QR 码,但当我单击“我不能”时,他们建议我自己复制粘贴密码。
但是他们肯定会跟踪用户是从移动设备登录的,为什么不直接显示一个 otpauth:// 链接呢?我尝试在我的应用程序中这样做,它就像一个魅力(至少在 Android 上,现在无法在 iPhone 上检查,但如果你有机会在 iPhone 上测试,这里有一个示例链接):
otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite
upd:SOF 不会让它可点击 - 必须是出于安全原因,但在我的网站上我可以毫无问题地做到这一点。将其包装到Chrome的Android上的代码中,当检查“请求桌面站点”复选框时:
<a href="otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite">otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite</a>
通过点击它,Android 建议我可以使用 Microsoft 或 Google 验证器,这意味着 Google 的应用程序支持这个技巧。我也安装了 LastPass,但那个并没有弹出。
在我看来,这个解决方案对用户更加友好,而且很好奇为什么谷歌不允许用户这样做?一定是一些我不考虑的陷阱?