Ho utilizzato https://github.com/chregu/GoogleAuthenticator.php per creare un'autenticazione a 2 fattori per un'applicazione Web su cui sto lavorando. Tutto funziona generando segreto e anche il codice ha funzionato. Ora ho impostato lo stesso codice su un altro server e ho generato una nuova chiave segreta e l'ho aggiunta all'app mobile google authenticator ora il codice generato nel cellulare non corrisponde.Google Authenticator con PHP
Mi sto scavando confrontando i risultati su entrambi i server e ho notato che la funzione time() restituisce un tempo diverso (differenza di 1 ora) quindi ho forzato il mio secondo server (dove non funzionava il codice google) ad avere lo stesso tempo del primo e lavorato. Quindi sono davvero confuso è una sorta di problema del fuso orario? Coz ho davvero bisogno di questi server per avere il proprio fuso orario.
C'è qualche problema?
Inoltre ho seguito https://support.google.com/accounts/answer/185834?hl=en e ho sincronizzato la mia app di autenticazione di Google ancora non funziona. il codice generato nell'app mobile funziona sul mio secondo server dopo un'ora. Qualcuno può aiutarmi o suggerirmi un approccio diverso.
Ecco il codice che sto usando per connettersi alla libreria sopra
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;
}
}
Dopo un paio di riflessioni serie: sto pensando di salvare più informazioni come il fuso orario degli utenti e poi ottenere il codice facendo manipolare il tempo in base al fuso orario a cui appartengono. C'è qualche altra soluzione migliore? –