Google аутентификация - TOTP, чтобы проверить оставшиеся секунды
Время (20 секунд достоверности) на основе кода аутентификации Google, мне нужно проверить время, прежде чем читать 4-значный код.
- Соберите код авторизации Google, используя TOTP
- Примените код автоматически в нашем приложении
Проблема при чтении - код на грани (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: считаются ли секунды?