Как проверить двухфакторную аутентификацию с помощью QR-изображений - PullRequest
1 голос
/ 19 сентября 2019

В настоящее время я добавляю двухфакторную аутентификацию в приложение rails.Я добавил процесс, который позволяет пользователям включать двухфакторную аутентификацию, используя QR-код для проверки себя.Я использую этот гем: https://github.com/Houdini/two_factor_authentication,, который позволяет вам генерировать URI обеспечения, который можно превратить в QR-код.Затем пользователь может сканировать это с помощью таких приложений, как Authy или Google authenticator, чтобы получить одноразовый пароль.

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

Поэтому мой вопрос: возможно ли получить секретный ключ, который вы получили бы при сканированииQR-код, программно и если да, то как?

Приложение основано на Ruby on rails 5.2.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

У вас есть два варианта:

  1. Найдите способ прочитать QR в Ruby.Это больше всего похоже на то, что должен делать пользователь, но может быть трудным (я не знаю, я никогда этого не делал).

  2. Создание 6-значного кода ("TOTP код") самостоятельно.Это кажется немного более хакерским (и, я полагаю, углубляется в некоторые детали реализации), но это проще сделать, чем вариант 1.

Для варианта 2 вы можете использовать гем rotp(который Гудини использует сам) и секретный ключ, который вы генерируете через Гудини.

secret_key = user.generate_totp_secret

# then...

totp = ROTP::TOTP.new(secret_key)
totp.now # --> the 6-digit code

(Вы можете увидеть, как Гудини использует rotp драгоценный камень здесь .)

0 голосов
/ 20 сентября 2019

Если вы хотите протестировать объект из определенного драгоценного камня, в большинстве случаев вы можете найти некоторые подсказки в исходном репо.Популярные драгоценные камни обычно хорошо проверены.Взгляните сюда https://github.com/Houdini/two_factor_authentication/blob/master/spec/lib/two_factor_authentication/models/two_factor_authenticatable_spec.rb#L182

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...