Google身份验证-TOTP检查剩余秒数

时间:2018-11-29 08:55:42

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

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

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

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

a。如果有效时间大于10秒,我可以获取代码并将其传递给文本框 b。如果有效时间少于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的有效时间?

1 个答案:

答案 0 :(得分:0)

有关TOTP的信息。无论如何,服务器通常应该允许±1时间间隔内的代码。因此,很可能您不必担心这种人为延迟。

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

P.S。我听说有些服务器会根据客户端以前的身份验证尝试来调整时间计算,以使客户端/服务器的时间偏移不会破坏身份验证。例如当客户端计算机不使用NTP而时钟关闭时。

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