rdtvaacar/google2fa

一个一次性密码认证包,兼容Google Authenticator。

dev-master / 1.0.x-dev 2021-03-09 23:44 UTC

This package is auto-updated.

Last update: 2024-09-10 06:56:18 UTC


README

Latest Stable Version License Downloads

PHP Google 双因素认证包

Google2FA是Google双因素认证模块的PHP实现,支持RFC 4226中指定的基于HMAC的一次性密码(HOTP)算法和RFC 6238中指定的基于时间的一次性密码(TOTP)算法。

此包是通用的,但也支持Laravel框架。

要求

  • PHP 5.3.7+

兼容性

您不需要Laravel即可使用它,但它与以下兼容:

  • Laravel 4.1+
  • Laravel 5+

安装

使用Composer安装

composer require rdtvaacar/google2fa

如果您更喜欢使用Google生成的URL而不是内联QR码,则需要安装BaconQrCode

composer require "bacon/bacon-qr-code":"~1.0"

Laravel上的安装

将服务提供者和外观别名添加到您的app/config/app.php(Laravel 4.x)或config/app.php(Laravel 5.x)

Rdtvaacar\Google2FA\Vendor\Laravel\ServiceProvider::class,

'Google2FA' => Rdtvaacar\Google2FA\Vendor\Laravel\Facade::class,

使用方法

直接实例化

use Rdtvaacar\Google2FA\Google2FA;

$google2fa = new Google2FA();

return $google2fa->generateSecretKey();

在Laravel中,您可以使用IoC容器和合约

$google2fa = app()->make('Rdtvaacar\Google2FA\Contracts\Google2FA');

return $google2fa->generateSecretKey();

或方法注入,在Laravel 5中

use Rdtvaacar\Google2FA\Contracts\Google2FA;

class WelcomeController extends Controller 
{
	public function generateKey(Google2FA $google2fa)
	{
		return $google2fa->generateSecretKey();
	}
}

或外观

return Google2FA::generateSecretKey();

如何生成和使用双因素认证

为您的用户生成一个密钥并将其保存

$user = User::find(1);

$user->google2fa_secret = Google2FA::generateSecretKey();

$user->save();

向用户展示QR码

$google2fa_url = Google2FA::getQRCodeGoogleUrl(
	'YourCompany',
	$user->email,
	$user->google2fa_secret
);

{{ HTML::image($google2fa_url) }}

他们应该查看并扫描QR码到他们的应用程序

QRCode

要验证,只需

$secret = Input::get('secret');

$valid = Google2FA::verifyKey($user->google2fa_secret, $secret);

服务器时间

确保您的服务器时间与某个NTP服务器同步非常重要,在Ubuntu上,您可以将此添加到crontab

ntpdate ntp.ubuntu.com

使用更大的密钥并添加前缀

尽管16字节(128位)随机字符串的冲突概率非常低,但您可以通过以下方式加固它:

使用更大的密钥

$secretKey = $google2fa->generateSecretKey(32); // defaults to 16 bytes

添加前缀

$secretKey = $google2fa->generateSecretKey(16, $userId);

演示

这里有一个演示应用程序,展示了如何使用Google2FA:google2fa-example

您可以使用Google Authenticator应用程序在此页面上扫描QR码,并实时查看代码的变化(几乎)。

Google Authenticator应用程序

要使用双因素认证,您的用户必须安装一个兼容Google Authenticator的应用程序,以下是一些目前可用的应用程序:

测试

此包的测试是用phpspec编写的。

作者

Antonio Carlos Ribeiro

许可

Google2FA根据BSD 3-Clause许可证授权 - 有关详细信息,请参阅LICENSE文件

贡献

欢迎拉取请求和问题。