аутентификация — Google Authenticator с использованием переполнения стека

я использовал https://github.com/chregu/GoogleAuthenticator.php построить двухфакторную аутентификацию для веб-приложения, над которым я работаю. Все работает, генерируя секрет, и даже код работал.
Теперь я установил тот же код на другом сервере, сгенерировал новый секретный ключ и добавил его в мобильное приложение google authenticator. Теперь код, созданный на мобильном устройстве, не совпадает.

Я покопался, сравнив результаты на обоих серверах, и заметил, что функция time () возвращает разное время (разница в 1 час), после чего я заставил свой второй сервер (где не работал код Google) иметь то же время, что и первый, и это сработало. Так что я действительно запутался, это какая-то проблема с часовым поясом? Потому что мне действительно нужны эти серверы, чтобы иметь свой собственный часовой пояс.

Есть ли работа вокруг?

Тоже следил https://support.google.com/accounts/answer/185834?hl=en и синхронизировал мое приложение Google для проверки подлинности по-прежнему не работает. код, сгенерированный в мобильном приложении, работает на моем втором сервере через час. Может кто-нибудь, пожалуйста, помогите мне или предложите мне другой подход.

вот код, который я использую для подключения к вышеуказанной библиотеке

class googleAuthLibrary extends GoogleAuthenticator
{
public function getSecretKey()
{
$secretKey = $this->generateSecret();

return $secretKey;
}

public function getQRLink($username, $hostname, $secretKey)
{
$url = 'https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl=';

$qrCode = 'otpauth://totp/'.$username.'@'.$hostname.'?secret='.$secretKey;

$url = $url.$qrCode;

return $url;
}

public function getAuthCode($secretKey)
{
$authCode =$this->getCode($secretKey);

return $authCode;
}
}

8

Решение

Обнаружил, что время моего сервера не синхронизировано со временем в интернете. После синхронизации времени на веб-сервере проблема была решена.
Таким образом, часовой пояс не влияет на аутентификатор, если для синхронизации мобильного телефона и сервера установлено правильное время (NTP-серверы).

Если кто-то сталкивается с такой же проблемой, проверьте время на сервере и время на мобильном телефоне, убедитесь, что они показывают правильное время, даже если минута медленная или быстрая, может привести к тому, что будут генерироваться неправильные коды.

13

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]