diadal / google2fa-laravel
一个一次性密码身份验证包,兼容Google身份验证器。
Requires
- php: >=5.4
- laravel/framework: >=5.2
- pragmarx/google2fa: ~3.0
Requires (Dev)
- orchestra/testbench-browser-kit: ~3.4|~3.5|~3.6
- phpunit/phpunit: ~5|~6|~7
Suggests
- bacon/bacon-qr-code: Required to generate inline QR Codes.
- pragmarx/recovery: Generate recovery codes.
README
使用Web和admin身份验证守卫的Laravel Google双因素认证包
Google2FA是Google双因素认证模块的PHP实现,支持RFC 4226中指定的基于HMAC的一次性密码(HOTP)算法和RFC 6238中指定的基于时间的一次性密码(TOTP)算法。
此包是Laravel到Google2FA PHP包的桥梁。
此包的目的是为Google2FA创建二维码并检查用户输入的代码。如果您需要创建备份/恢复代码,请参阅以下内容。
恢复/备份代码
如果您需要创建恢复或备份代码,以便为用户提供恢复丢失账户的方法,您可以使用Recovery Package。
演示、示例及游乐场
请查看Google2FA Package Playground。
以下是一个演示应用程序,展示了如何使用Google2FA:google2fa-example。
您可以使用Google身份验证器应用程序扫描此(旧)演示页面上的二维码,并实时查看代码变化。
兼容性
安装
使用Composer进行安装
composer require diadal/google2fa-laravel
如果您更喜欢内嵌二维码而不是Google生成的URL,则需要安装BaconQrCode
composer require bacon/bacon-qr-code
Laravel上的安装
Laravel 5.5
您无需做任何事情,此包会自动加载服务提供程序并创建别名,使用新的自动发现功能。
Laravel 5.4及以下
将服务提供程序和外观别名添加到您的app/config/app.php(Laravel 4.x)或config/app.php(Laravel 5.x)
Diadal\Google2FALaravel\ServiceProvider::class, 'Diadal2FA' => Diadal\Google2FALaravel\Facade::class,
发布配置文件
php artisan vendor:publish --provider="Diadal\Google2FALaravel\ServiceProvider"
使用它
使用外观
use Diadal2FA; return Diadal2FA::generateSecretKey();
在Laravel中,您可以使用IoC容器
$google2fa = app('diadal.google2fa'); return $google2fa->generateSecretKey();
中间件
此包有一个中间件,可以帮助您在应用程序中实现双因素认证。要使用它,只需
使用中间件
将中间件添加到您的Kernel.php
protected $routeMiddleware = [ ... '2fa' => \Diadal\Google2FALaravel\Middleware::class, ];
在一个或多个路由中使用它
Route::get('/admin', function () { return view('admin.index'); })->middleware(['auth', '2fa']);
配置视图
您可以在配置文件(config/google2fa.php)中设置您的“请求一次性密码”视图
/** * One Time Password View */ 'view' => 'google2fa.index',
在视图中,您只需提供一个包含输入表单的内容,这些内容也可以进行配置
/** * One Time Password request input name */ 'otp_input' => 'one_time_password',
以下是一个表单示例
<form action="/google2fa/authenticate" method="POST"> <input name="one_time_password" type="text"> <button type="submit">Authenticate</button> </form>
一次性密码有效期
通常OTP会一直有效,直到用户从应用程序注销,但为了提高应用程序的安全性,您可能需要定期重新请求Google OTP。因此,您可以在此处设置分钟数。
/** * Lifetime in minutes. * In case you need your users to be asked for a new one time passwords from time to time. */ 'lifetime' => 0, // 0 = eternal
您可以决定在用户浏览网站时是否保持OTP的有效性。
/** * Renew lifetime at every new request. */ 'keep_alive' => true,
手动从2Fa注销
此命令将使您的用户注销并将在下一次请求时重定向到2Fa表单。
Google2FA::logout();
如果您不想使用外观,您可以选择
use Diadal\Google2FALaravel\Support\Authenticator; (new Authenticator(request()))->logout();
事件
以下事件被触发
- EmptyOneTimePasswordReceived
- LoggedOut
- LoginFailed
- LoginSucceeded
- OneTimePasswordExpired
- OneTimePasswordRequested
文档
请检查主仓库中的Google2FA目录下的ReadMe文件。
测试
该软件包的测试是用phpspec编写的。
作者
许可证
Google2FA遵循MIT许可证 - 详细信息请参阅LICENSE文件
贡献
欢迎提交pull请求和问题。

