如何确保 TOTP 的用户密钥有效?

How do I ensure the users secret key for TOTP is valid?

我正在开发 2FA 应用程序。
有没有办法让用户提供的我用来生成他们的令牌的密钥事先有效?

编辑:
澄清一下:我不提供登录服务器,而是为用户生成令牌(想想 authy 或 google 身份验证器)

您需要将生成的密钥存储在内存或数据库中的某处。然后当秘钥被发回时,与存储的值进行校验。

验证密码是否正确的唯一方法是生成令牌并将其提交给为用户生成和存储密码的服务。如果服务同意令牌是正确的,那么您就有了正确的秘密。

如果今天有人还在搜索这个,我四处搜索了一下,得到了答案

以下格式为有效的totp二维码:

otpauth://totp/{CompanyName}:{Email}?secret={Secret}&issuer={CompanyName}
  • 电子邮件:不需要真的是电子邮件,只需一个客户名称“name”或“name@email.com”
  • 公司名称:公司名称的格式可以是“example.com”或“example”
  • Secret: 需要是base32格式的字符串

您可以在以下位置阅读更多相关信息:https://datatracker.ietf.org/doc/html/rfc6238#section-4