1

我在我的一个应用程序中实现了 2FA(TOTP 方法)。在服务器端 (PHP) 处理密钥生成和 TOTP 代码验证。在某些情况下,我的应用程序不接受由 TOTP 应用程序(我的案例 Google Authenticator)生成的 TOTP 代码。我知道这是因为时差。我期待一种方法来支持来自不同时区的用户。

当前的实现行为:

案例1(完美运行):

  • 服务器默认时区设置为“亚洲/加尔各答”
  • 用户从印度启用 TOTP
  • 用户总是从印度登录

案例2(登录失败):

  • 服务器默认时区设置为“亚洲/加尔各答”
  • 用户从印度启用 TOTP
  • 从不同时区登录

案例3(登录失败):

  • 服务器默认时区设置为“亚洲/加尔各答”
  • 用户从不同时区启用 TOTP
  • 用户从不同时区登录

TOTP 通常如何集成到应用程序中以支持来自不同时区的用户?

从客户端(JS)生成秘密和验证是最佳实践吗?

4

1 回答 1

3

您应该始终使用 UTC 作为 Timezone 。这是最简单的方法。

于 2019-02-18T17:15:54.890 回答