Google аутентификация - TOTP, чтобы проверить оставшиеся секунды

Время (20 секунд достоверности) на основе кода аутентификации Google, мне нужно проверить время, прежде чем читать 4-значный код.

  1. Соберите код авторизации Google, используя TOTP
  2. Примените код автоматически в нашем приложении

Проблема при чтении - код на грани (18/19-й секунды) и автоматическая отправка кода в наше текстовое поле, но срок действия истек и аутентификация не удалась. так что я хочу проверить код вместе со временем действия

а. если срок действия больше 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 ответ

Смотрите о TOTP. Сервер обычно должен разрешать коды с интервалом времени ±1 в любом случае. Поэтому, скорее всего, вам не нужно беспокоиться о таких искусственных задержках.

Кроме этого, в зависимости от параметров TOTP, вы должны знать, когда наступает точка отключения следующих временных интервалов. Таким образом, вы можете просто проверить, насколько близко вы находитесь к точке отключения, основываясь на текущем времени.

PS Я слышал, что некоторые серверы корректируют расчеты времени на основе предыдущих попыток аутентификации клиента, чтобы сдвиги времени клиент / сервер не нарушали аутентификацию. например, когда клиентский компьютер не использует NTP и, следовательно, часы отключаются.

обновление: о генерации метки времени TOTP: считаются ли секунды?

Другие вопросы по тегам