6

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; 
    } 
} 
+0

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? –

Antwort

10

Fand heraus zu verbinden bin mit, dass mein Server Zeit nicht mit Internet-Zeit synchronisiert wurde. Nach der Synchronisierung im Webserver wurde das Problem behoben. So beeinflusst Zeitzone den Authentifikator nicht, solange sowohl das Mobiltelefon als auch der Server synchronisiert sind (NTP-Server).

Wenn jemand mit demselben Problem Serverzeit und Handyzeit überprüfen, stellen Sie sicher, dass sie richtige Zeit zeigen, selbst eine Minute langsam oder schnell kann am Ende falsche Codes generieren.

Verwandte Themen