rdtvaacar / google2fa
一个一次性密码认证包,兼容Google Authenticator。
Requires
- php: >=5.3.7
- paragonie/random_compat: ~1.4|~2.0
- symfony/polyfill-php56: ~1.2
- tuupola/base32: 2.0.0
Requires (Dev)
- phpspec/phpspec: ~2.1
Suggests
- bacon/bacon-qr-code: Required to generate inline QR Codes.
This package is auto-updated.
Last update: 2024-09-10 06:56:18 UTC
README
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码到他们的应用程序
要验证,只需
$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的应用程序,以下是一些目前可用的应用程序:
- Authy for iOS, Android, Chrome, OS X
- FreeOTP for iOS, Android and Peeble
- FreeOTP for iOS, Android and Peeble
- Google Authenticator for iOS
- Google Authenticator for Android
- Google Authenticator for Blackberry
- Google Authenticator (port) on Windows app store
- Microsoft Authenticator for Windows Phone
- 1Password for iOS, Android, OSX, Windows
测试
此包的测试是用phpspec编写的。
作者
许可
Google2FA根据BSD 3-Clause许可证授权 - 有关详细信息,请参阅LICENSE
文件
贡献
欢迎拉取请求和问题。