php - 如何使用 php 创建谷歌两因素身份验证?

标签 php two-factor-authentication google-authenticator

我想在我的 PHP 项目中使用 Google 2FA。用户需要在登录时输入 6 位 2fa 代码。

你能画出一些关于采取哪个方向的提示吗?

最佳答案

步骤 1) 创建一个长度为 16 个字符的唯一密码。
PHPGangsta 为 Google Authenticator 提供包装类。您可以使用composer下载。

curl -sS https://getcomposer.org/installer | php
php composer.phar require  phpgangsta/googleauthenticator:dev-master
Use the below code to generate the secret code.

<?php
require 'vendor/autoload.php';
$authenticator = new PHPGangsta_GoogleAuthenticator();
$secret = $authenticator->createSecret();
echo "Secret: ".$secret;
 
?>
 
步骤 2) 使用生成的 key 创建二维码。
我们需要使用 secret 准备一个二维码。如果您想了解更多关于 Google Authenticator 二维码生成的信息。 Github 维基
您可以使用任何二维码生成器来生成二维码,对于这个演示,我使用的是谷歌图表。
require 'vendor/autoload.php';
$authenticator = new PHPGangsta_GoogleAuthenticator();
$secret = $authenticator->createSecret();
echo "Secret: ".$secret."\n";  //save this at server side
 
$website = 'http://hayageek.com'; //Your Website
$title= 'Hayageek';
$qrCodeUrl = $authenticator->getQRCodeGoogleUrl($title, $secret,$website);
echo $qrCodeUrl;
第 3 步)使用 Google Authenticator App 生成 TOTP(基于时间的一次性密码)
从 Google Play 或 AppStore 下载 Google Authenticator 应用程序
打开应用程序并单击“+”按钮,然后扫描使用 Google Charts 生成的二维码。身份验证器应用程序为您的网站生成 TOTP。 TOTP 将每 30 秒更改一次。
使用 Google Authenticator 进行两因素身份验证
步骤 4)在服务器端验证 OTP
require 'vendor/autoload.php';
$authenticator = new PHPGangsta_GoogleAuthenticator();
 
$secret = '3JMZE4ASZRIISJRI'; //This is used to generate QR code
$otp = '183036' ;//Generated by Authenticator.
 
$tolerance = 0;
    //Every otp is valid for 30 sec.
    // If somebody provides OTP at 29th sec, by the time it reaches the server OTP is expired.
    //So we can give tolerance =1, it will check current  & previous OTP.
    // tolerance =2, verifies current and last two OTPS
 
$checkResult = $authenticator->verifyCode($secret, $otp, $tolerance);    
 
if ($checkResult) 
{
    echo 'OTP is Validated Succesfully';
     
} else {
    echo 'FAILED';
}

   source code refer this link : http://hayageek.com/two-factor-authentication-with-google-authenticator-php/

关于php - 如何使用 php 创建谷歌两因素身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42290885/

相关文章:

php - 在 Controller 中调用 Controller ?

java - 如何使用ajax、json中返回的数组

api - 使用 React 和 php api 进行两因素注册

node.js - REST API 的基本身份验证的两因素身份验证?

amazon-web-services - 如何将更多设备添加到 AWS 根账户 MFA

用于谷歌身份 validator 的 Java API

google-plus - Android Google Auth 登录获取 ID token handleSignInResult :false

php - 升级到 PHP 版本 7 后,出现 XAMPP Apache 服务器错误

php - 使用PHP连接到hiveserver2

python - 生成的代码与 PyOTP 示例不匹配