Как стать автором
Обновить

OTP тестированию не помеха

Важность unit и интеграционных тестов несомненна для более-менее опытного разработчика. В этом посте поделюсь как решить следующую задачу:
Дано:

1) endpoint api для которого нужене OTP (one time password)

2) QR код экспорта из google authenticator

Найти: автоматически получать OTP и отправлять его endpoint-у

Решение:

1) Сканируем QR код любым сканером QR кодов, получаем что-то вроде 'otpauth-migration://offline?data=CjIKFEuKYhr.....' , обозначим это за url.
2) Этот url надо раскодировать, есть несколько вариантов как это сделать привожу довольно просто (минимум телодвижений) https://github.com/qistoph/otp_export . Клонируем и выполняем команду
./parse.py 'url'
вывод будет содержать secret это Base32 строчка-ключ обозначим за secret.

3) Осталось выбрать библиотеку для вашего языка реализующую RFC4226/RFC6238 и с помощью sercret и текущего времени в мс. получить OTP

Привожу пример на dart :
Пакет https://pub.dev/packages/otp
Вызов: final code = OTP.generateTOTPCodeString(secret, date.millisecondsSinceEpoch,algorithm: Algorithm.SHA1, isGoogle: true);

Теги:
Рейтинг0
Комментарии0

Публикации

Ближайшие события