elshaden / apiato-otpkey
在Apiato项目中使用TOTP实现两步验证。
1.0.0
2023-01-01 08:24 UTC
Requires
- bacon/bacon-qr-code: ^2.0
- pragmarx/google2fa: ^7.0|^8.0
README
多因素身份验证(MFA),2FA。
此容器用于使用任何应用程序(如Google Authenticator)管理两步验证。
注意:此容器尚未完全测试,请谨慎使用。
安装
仅适用于现有的Apiato应用程序
有关Apiato容器安装程序的更多信息,请参阅文档!
步骤
composer require elshaden/apiato-otpkey
在用户模型中添加use HasOtpKeyTrait
迁移'otp_keys'表
然后就可以使用了
检查配置目录中的配置文件是否有更改
用法
查找用户是否具有MFA密钥
$user-> HasOtp();
这将返回Otp Key的完整记录。
object // OtpKey
id // Hashed OtpKey Id
user_id
code // Base64 OtpKey Code
qr_code // QR Code Image
active // Active or not
created_at
updated_at
readable_created_at
readable_updated_at
创建新的MFA密钥
$user-> CreateOtpKey();
这将返回:使用Otp Key(基于64的TOTP密钥)创建的Otp_key记录,以Base 64图像形式返回QR码和用户ID。
更新密钥
$user->UpdateKey();
这将重新生成密钥并更新记录。
为给定的代码生成QR码
$user->GetQrCode($code) ;
验证给定的令牌是否有效(验证器中的六位数)
$user->ValidateKey($Code); // The code must be the six digits in the Authenticator
生成代码
$user->GenerateCode();
这将根据用户令牌在任何给定时间生成一个6位数代码。此代码应与Google Authenticator等任何验证器应用程序匹配。
API端点
除了查找、删除和更新任何用户的OtpToken外。
注意:当在validate-otpkeys插槽中验证Otp时,表示验证过去30秒的密钥。
例如,10个插槽表示10 * 30秒 = 300秒 / 60 = 5分钟。因此,Otp在过去5分钟内有效。
对于5分钟令牌,slots = 5 * 60 = 300
对于一天令牌,slots = 24 * 60 * 60 = 86400
期限越长,检查有效性的时间就越长,因此请尽量保守。