AWS Amplify Cognito TOTP 设置的较短手动设置代码

问题描述

我们正在使用 Amplify、Cognito 和 Angular 来构建登录工作流程。在 TOTP 设置过程中,我们会向用户展示一个二维码。

作为一种良好的做法,我们还希望允许用户手动输入“设置代码”,以防他们无法使用二维码。

我真的找不到关于此的任何具体文档,但似乎有些人建议使用“复制到剪贴板”按钮,该按钮复制 Auth.setupTOTP() 的结果,然后可以将其复制到 Google Authenticator 或 Authy,或者用户用来管理其 MFA 的任何东西。

问题在于:

  1. 用户通常在台式计算机上设置 TOTP,并使用手机作为两因素身份验证。因此,“复制到剪贴板”技术是无用的。他们必须手动输入代码。
  2. 代码长度为 52 个字符!没有人会想输入 52 个字符。

有没有办法获得更短的代码,例如最多 16 个字符?

解决方法

不,那是不可能的。身份验证器应用程序需要 base32 编码的种子值,因此无需执行编码魔术来减少字符数。 TOTP 种子必须足够长才能抵抗蛮力。

就用户体验而言,我唯一一次使用手动输入选项是在我的手机上设置 MFA 时,这显然意味着我无法用它拍摄 QR 照片。在这种情况下,复制到剪贴板按钮会很有用,而且还可以让在触摸设备上轻松选择和复制。

您不必适应每一种情况,它是一次性设置。如果有人由于某种原因无法用手机扫描二维码,他们只需要手动输入即可。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...