Существует ли общедоступный API для использования Google Authenticator (двухфакторная аутентификация) в автономных (например, в стеке LAMP) веб-приложениях?
Существует ли общедоступный API для использования Google Authenticator (двухфакторная аутентификация) в автономных (например, в стеке LAMP) веб-приложениях?
Проект с открытым исходным кодом. Я не использовал это. Но он использует документированный алгоритм (отмеченный в RFC, указанном на странице проекта с открытым исходным кодом), и реализации аутентификатора поддерживают несколько учетных записей.
Фактический процесс прост. Одноразовый код, по сути, генератор псевдослучайных чисел. Генератор случайных чисел - это формула, которая после получения начального или начального числа продолжает создавать поток случайных чисел. Если задано начальное число, хотя числа могут быть случайными друг для друга, сама последовательность является детерминированной. Таким образом, если ваше устройство и сервер синхронизированы, то случайные числа, которые создает устройство, каждый раз, когда вы нажимаете «кнопку следующего номера», будут такими же случайными числами, которые ожидает сервер.
Система безопасного одноразового пароля более сложна, чем генератор случайных чисел, но концепция похожа. Есть также другие детали, чтобы помочь синхронизировать устройство и сервер.
Таким образом, не нужно, чтобы кто-то еще размещал аутентификацию, как, например, OAuth. Вместо этого вам нужно реализовать этот алгоритм, совместимый с приложениями, которые Google предоставляет для мобильных устройств. Это программное обеспечение доступно (должно быть) в проекте с открытым исходным кодом.
В зависимости от вашей сложности, у вас должно быть все необходимое для реализации серверной части этого процесса, включая проект OSS и RFC. Я не знаю, есть ли конкретная реализация для вашего серверного программного обеспечения (PHP, Java, .NET и т. Д.)
Но, в частности, вам не нужен внешний сервис, чтобы справиться с этим.
Алгоритм задокументирован в RFC6238 . Идет примерно так:
У меня была игра, реализующая алгоритм в javascript здесь: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
источник
Существует множество библиотек для PHP (стек LAMP)
PHP
https://code.google.com/p/ga4php/
http://www.idontplaydarts.com/2011/07/google-totp-two-factor-authentication-for-php/
Будьте осторожны при реализации двухфакторной аутентификации, вам необходимо убедиться, что ваши часы на сервере и клиенте синхронизированы, что существует защита от атак методом перебора на токене и что исходное начальное число достаточно велико.
источник
Вы можете использовать мое решение , опубликованное в качестве ответа на мой вопрос (там есть полный код Python и пояснения ):
Я думаю, что это довольно легко реализовать на PHP или Perl. Если у вас есть какие-либо проблемы с этим, пожалуйста, дайте мне знать.
Я также разместил свой код на GitHub в качестве модуля Python.
источник
Я нашел это: https://github.com/PHPGangsta/GoogleAuthenticator . Я проверил это и прекрасно работает для меня.
источник
Theres: https://www.gauthify.com, который предлагает его в качестве услуги
источник
Да, сетевая служба не нужна, поскольку приложение Google Authenticator не связывается с сервером Google, оно просто синхронизируется с исходным секретом, который ваш сервер генерирует (вводит в ваш телефон с помощью QR-кода), пока проходит время.
источник
Не LAMP, но если вы используете C #, это код, который я использую:
Код от:
https://github.com/kspearrin/Otp.NET
Класс Base32Encoding от этого ответа:
https://stackoverflow.com/a/7135008/3850405
Пример программы:
TOTP:
Base32Encoding:
источник
Для тех, кто использует Laravel, этот https://github.com/sitepoint-editors/google-laravel-2FA является хорошим способом решения этой проблемы.
источник
Для пользователя C #: запустите это простое консольное приложение, чтобы понять, как проверить однократный код токена. Обратите внимание, что сначала нам нужно установить библиотеку Otp.Net из пакета Nuget.
источник