加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP的Google身份验证器

发布时间:2020-12-13 18:26:43 所属栏目:PHP教程 来源:网络整理
导读:我已经使用 https://github.com/chregu/GoogleAuthenticator.php为我正在处理的Web应用程序构建了2因子身份验证.一切都有效,甚至代码都有效. 现在我在不同的服务器中设置相同的代码并生成新的密钥并将其添加到谷歌身份验证器移动应用程序现在移动中生成的代
我已经使用 https://github.com/chregu/GoogleAuthenticator.php为我正在处理的Web应用程序构建了2因子身份验证.一切都有效,甚至代码都有效.
现在我在不同的服务器中设置相同的代码并生成新的密钥并将其添加到谷歌身份验证器移动应用程序现在移动中生成的代码不匹配.

我通过比较两个服务器上的结果并注意到time()函数返回不同的时间(1小时差异),然后我强迫我的第二个服务器(谷歌代码没有工作)与第一个服务器有相同的时间,并且它工作.所以我真的很困惑这是某种时区问题吗?因为我真的需要这些服务器拥有自己的时区.

有什么工作吗?

此外,我遵循https://support.google.com/accounts/answer/185834?hl=en并同步我的谷歌身份验证器应用程序仍然无法正常工作.移动应用程序中生成的代码在一小时后在我的第二台服务器上运行.任何人都可以帮助我或建议我一个不同的方法.

这是我用来连接上面的库的代码

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;
    }
}
发现我的服务器时间没有与互联网时间同步.在Web服务器中同步时间后问题得到解决.
只要移动电话和服务器同步到正确的时间(NTP服务器),时区就不会影响验证者.

如果任何有相同问题的人检查服务器时间和手机时间,请确保他们显示正确的时间,即使一分钟慢或快,最终可能会生成错误的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读