6

Çalıştığım bir web uygulaması için 2 faktörlü bir kimlik doğrulaması oluşturmak için https://github.com/chregu/GoogleAuthenticator.php kullanıyorum. Her şey gizli ve hatta kod çalıştıran çalışır. Artık aynı kodu farklı bir sunucuda kurdum ve yeni bir gizli anahtar oluşturdum ve mobil cihazda oluşturulan kod artık eşleşmediği için Google kimlik doğrulaması mobil uygulamasına ekledim.PHP Kullanarak Google Authenticator

Her iki sunucudaki sonuçları karşılaştırarak kazarım ve farkettim() işlevi farklı zaman (1 saat fark) döndürür, sonra 2. sunucumu (google kodunun çalışmadığı yerde) ilk kez aynı zamana sahip olması için zorladım. çalıştı. Yani gerçekten kafam karışmış bu tür bir zaman dilimi sorunu mu? Coz, kendi saat dilimine sahip olmak için bu sunuculara ihtiyacım var.

Etrafta bir iş var mı?

Ayrıca, https://support.google.com/accounts/answer/185834?hl=en'u takip ettim ve google authenticator uygulamam senkronizasyonum hala çalışmıyor. Mobil uygulamada oluşturulan kod, bir saat sonra 2. sunucumda çalışır. Herkes bana yardım edebilir veya bana farklı bir yaklaşım önerebilir. Burada

benim sunucu zaman internet zamanla senkronize olmadığını öğrendim yukarıdaki kütüphanede

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

Birkaç düşünmeden sonra, kullanıcıların saat dilimi gibi daha fazla bilgi kaydetmeyi ve ait oldukları saat dilimini temel alarak zaman ayarlayarak kod yazmayı düşünüyorum. Başka daha iyi bir çözüm var mı? –

cevap

10

bağlanmak için kullanıyorum kodudur. Web sunucusunda zamanı senkronize ettikten sonra sorun çözüldü. Dolayısıyla, saat dilimi, hem cep telefonu hem de sunucu doğru süreye (NTP sunucuları) sahip olması için senkronize olduğu sürece kimlik doğrulayıcıyı etkilemez.

Aynı sorunu yaşayan biri, sunucu saatini ve cep telefonu süresini kontrol ederse, bir dakika bile olsa hızlı veya hızlı bir şekilde doğru zaman gösterdiğinden emin olun, yanlış kodlar oluşturabilir.