elshaden/apiato-otpkey

在Apiato项目中使用TOTP实现两步验证。

安装: 32

依赖: 0

建议者: 0

安全: 0

星级: 6

关注者: 1

分支: 2

开放问题: 0

类型:apiato-container

1.0.0 2023-01-01 08:24 UTC

This package is auto-updated.

Last update: 2024-08-29 12:12:26 UTC


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

期限越长,检查有效性的时间就越长,因此请尽量保守。