Аутентификация Google - TOTP для проверки оставшихся секунд - PullRequest
0 голосов
/ 29 ноября 2018

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

  1. Собрать код авторизации Google с помощью TOTP
  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 голосов
/ 29 ноября 2018

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

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

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

обновление: о создании отметки времени TOTP: счетчик секунд?

...