vectorface/googleauthenticator

谷歌身份验证器双因素认证

v3.2 2024-01-31 13:05 UTC

This package is auto-updated.

Last update: 2024-09-17 20:35:13 UTC


README

Build Status

英语 | 中文

这是对https://github.com/PHPGangsta/GoogleAuthenticator的分支,以下是所做的更改

  • 使用https://github.com/endroid/qr-code生成QR码数据URI
  • 不再生成谷歌的Chart API来制作QR码链接
  • 使用命名空间
  • 增加了测试覆盖率至100%
  • 将最低PHP版本提升至8.1

原始许可证

描述

这个PHP类可以用来与谷歌身份验证器移动应用进行交互,以实现双因素认证。该类可以生成密钥、生成代码、验证代码并显示用于扫描密钥的QR码。它实现了符合RFC6238的TOTP。

为了安全安装,您需要确保使用的代码不会被重用(重放攻击)。您还需要限制验证次数,以抵御暴力攻击。例如,您可以将单个IP地址(或IPv6块)在10分钟内的验证次数限制为10次。这取决于您的环境。

用法

请看以下示例

<?php
require_once 'vendor/autoload.php';

use Vectorface\GoogleAuthenticator;

$ga = new GoogleAuthenticator();
$secret = $ga->createSecret();
echo "Secret is: {$secret}\n\n";

$qrCodeUrl = $ga->getQRCodeUrl('Admin', $secret, 'Blog');
echo "PNG Data URI for the QR-Code: {$qrCodeUrl}\n\n";

$oneCode = $ga->getCode($secret);
echo "Checking Code '$oneCode' and Secret '$secret':\n";

// 2 = 2*30sec clock tolerance
$checkResult = $ga->verifyCode($secret, $oneCode, 2);
if ($checkResult) {
    echo 'OK';
} else {
    echo 'FAILED';
}

运行脚本将提供类似以下输出

Secret is: OQB6ZZGYHCPSX4AK

PNG Data URI for the QR-Code: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAIAAAAI[snipped]

Checking Code '848634' and Secret 'OQB6ZZGYHCPSX4AK':
OK

安装

composer require vectorface/googleauthenticator

运行测试

  • 所有测试都在tests文件夹中。
  • 执行composer install来准备您的环境。
  • 从项目根目录运行composer test