Ich habe https://github.com/chregu/GoogleAuthenticator.php verwendet, um eine 2-Faktor-Authentifizierung für eine Webanwendung zu erstellen, an der ich gerade arbeite. Alles funktioniert, was geheim ist und sogar der Code funktioniert. Jetzt habe ich den gleichen Code in einem anderen Server eingerichtet und generiert einen neuen geheimen Schlüssel und fügte es zu Google Authenticator Mobile App jetzt den Code in Mobile generiert nicht übereinstimmen.Google Authenticator mit PHP
Ich graben durch den Vergleich der Ergebnisse auf beiden Servern und bemerkte die time() -Funktion gibt unterschiedliche Zeit (1 Stunde Unterschied) dann zwang ich meinen 2. Server (wo Google Code nicht funktioniert), um die gleiche Zeit wie die erste und es hat funktioniert. Ich bin wirklich verwirrt, ist das eine Art Zeitzonenproblem? Coz ich brauche diese Server wirklich, um ihre eigene Zeitzone zu haben.
Gibt es irgendwelche Arbeit?
Auch ich folgte https://support.google.com/accounts/answer/185834?hl=en und synchronisierte meine Google Authenticator App immer noch nicht funktioniert. Der in der mobilen App generierte Code funktioniert nach einer Stunde auf meinem zweiten Server. Kann mir bitte jemand helfen oder mir einen anderen Ansatz vorschlagen.
hier ist der Code i auf die obige Bibliothek
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;
}
}
Nach ein paar ernsthaften Überlegungen :) Ich denke über das Speichern von mehr Informationen wie Benutzer Zeitzone und dann getcode durch Manipulieren der Zeit basierend auf der Zeitzone gehören sie. Gibt es eine andere bessere Lösung? –