grigor007
@grigor007
http://goldapp.ru

Как подключить google authenticator?

Здравствуйте,

подключаем google authenticator. На этапе первого сканирования qr кода из приложения google authenticator появляется ошибка "неверный ключ".

Кто-нибудь подключал google authenticator? Такое чувство, что мы где то на генерацию qr кода должны скормить хост, но в документации этого нет. Или возможна в библиотеке проблема..., тогда какая точно рабочая?
  • Вопрос задан
  • 3384 просмотра
Решения вопроса 1
Vamp
@Vamp
Сложно сказать в чём у вас ошибка, так как вы не предоставили код. Вероятно, криво составили QR, раз уж ошибка возникает при его сканировании. Более подробно о том как нужно составлять урл для QR-кода можно прочитать в вики.

Я внедрил Google Authenticator в свой проект без каких-либо проблем. Использую пакет sonata-project/google-authenticator.

Генерация кода:
$g = new \Google\Authenticator\GoogleAuthenticator();
$secret = $g->generateSecret();
echo '<img src="https://chart.googleapis.com/chart?'
  .'cht=qr&chl=otpauth://totp/mysite%3Fsecret%3D'
  .$secret.'&chs=200x200&chld=L|0" />';
Значение $secret сохраняется в БД и привязано к конкретному юзеру.

Проверка OTP:
$g = new \Google\Authenticator\GoogleAuthenticator();
if ($g->checkCode($secret, $code)) {
  echo 'Welcome!'
} else {
  echo 'Wrong code';
}
Примеры кода приведены для библиотеки версии 1.0.2.

Важный момент - время на сервере и на телефонах должно совпадать, чтобы генерируемые OTP совпадали. Поэтому сервер синхронизируется по протоколу NTP. С телефонами сложнее. Можно в настройках системы установить синхронизацию часов телефона с временем из GSM сети (для любых платформ), либо в настройках приложения Google Authenticator (в android версии есть, в iOS версии нет, про другие платформы не в курсе).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽