【问题标题】:Google authentication - TOTP to check remaining secondsGoogle 身份验证 - TOTP 检查剩余秒数
【发布时间】:2019-05-01 06:49:12
【问题描述】:

基于时间(20 秒有效期)的谷歌验证码,我需要在读取 4 位数代码之前检查时间。

  1. 使用TOTP收集谷歌验证码
  2. 在我们的应用程序中自动应用代码

问题, 读取时 - 边缘代码(18/19 秒),并自动将代码发送到我们的文本框,但有效性已过期且身份验证失败。所以我想检查代码以及有效期

一个。如果有效时间大于 10 秒,我可以获取代码并将其传递给文本框 湾。如果有效期小于10秒,等待10秒

代码:

 public static String getTOTPCode(String secretKey) {
        String normalizedBase32Key = secretKey.replace(" ", "").toUpperCase();
        Base32 base32 = new Base32();
        byte[] bytes = base32.decode(normalizedBase32Key);
        String hexKey = Hex.encodeHexString(bytes);           
        return TOTP.getOTP(hexKey);
    }

jar 文件

commons-code1.8 jar
totp-1.0 jar

参考上面,告诉我如何获得OTP的有效时间?

【问题讨论】:

    标签: java one-time-password google-authenticator totp


    【解决方案1】:

    请参阅TOTP。无论如何,服务器通常应该允许±1时间间隔的代码。所以很可能您不必担心这种人为的延迟。

    除此之外,根据 TOTP 参数,您应该知道何时是下一个时间间隔的触发点。因此,您可以根据当前时间检查您与触发点的距离。

    附:我听说一些服务器会根据客户端先前的身份验证尝试调整时间计算,以便客户端/服务器时间变化不会破坏身份验证。例如当客户端机器不使用 NTP 并因此时钟关闭时。

    更新:关于生成时间戳TOTP : Do the seconds count?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-16
      • 2021-05-13
      • 2018-02-24
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 2016-09-26
      • 2016-07-28
      相关资源
      最近更新 更多