robbyahnmsd/totp-authenticator

用于与 silverstripe/mfa 一起使用的 TOTP 认证器

安装: 460

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 0

分支: 10

语言:JavaScript

类型:silverstripe-vendormodule

4.x-dev 2023-01-04 03:15 UTC

README

CI Silverstripe supported module

使用手机上的认证器应用作为次要因素,通过基于时间的单次密码(TOTP)登录到 Silverstripe。

本模块提供了一种 TOTP 认证器,可插入到 silverstripe/mfa 模块。

有关 TOTP 的更多信息,请参阅 RFC 6238

需求

  • PHP ^7.1
  • Silverstripe ^4.1
  • silverstripe/mfa: ^4.0
  • spomky-labs/otphp: ^9.1

安装

使用 Composer 安装

composer require silverstripe/totp-authenticator ^4.0

为了支持 Silverstripe 3.7,请使用 silverstripe/totp-authenticator ^3.0

配置

加密密钥

您需要定义一个名为 SS_MFA_SECRET_KEY 的环境变量,该变量包含一个随机密钥,用于加密 TOTP 密钥。只有在正确定义后,认证方法才可供使用。

请注意,对于在具有不同 SS_MFA_SECRET_KEY 值的环境中注册的用户现有的 TOTP 方法将无法使用。

创建随机密钥的方法有很多,最简单的是在命令行中执行一个 php 命令。密钥长度取决于您特定的信息安全控制,但32个字符是一个良好的起点。

php -r 'echo substr(base64_encode(random_bytes(32)), 0, 32) . "\n";'

TOTP 密钥长度

您还可以配置 TOTP 密钥的长度。这是在用户注册使用 TOTP 时显示给用户的代码,例如“另外,可以将此代码手动输入到您的应用中。”默认长度为16个字符。如果您不希望支持项目中的手动代码输入,则可能需要增加长度以提高 TOTP 密钥的熵,但是从 UI 中删除密钥将需要调整 React 组件。请参阅 RegisterHandler.secret_length 配置属性。

SilverStripe\TOTP\RegisterHandler:
  secret_length: 64

TOTP 代码长度

如果您想更改应用程序接受的 TOTP 代码的长度,可以调整 Method.code_length。默认长度为6个字符。

SilverStripe\TOTP\Method:
  code_length: 10

用户帮助链接

当此方法在网站的多因素登录过程中使用时,它可能会显示一个指向用户文档的“了解更多”链接。您可以通过取消配置属性 RegisterHandler.user_help_link 来禁用此功能,或者将其更改为指向您自己的文档。

SilverStripe\TOTP\RegisterHandler:
  user_help_link: 'https://intranet.mycompany.com/help-docs/using-totp'

TOTP 发起人和标签

TOTP 的“发起人”默认是 Silverstripe 网站名称(在 SiteConfig 中设置),而“标签”默认是成员的电子邮件地址。这些是在您的认证器应用中显示的值。如果您需要使用其他内容,可以通过编写 RegisterHandler 的扩展来更改这些值。

class MyTOTPRegisterHandlerExtension extends Extension
{
    public function updateTotp(\OTPHP\TOTPInterface $totp, \SilverStripe\Security\Member $member)
    {
        $totp->setLabel($member->getCustomTOTPLabel());
        $totp->setIssuer('My web project');
    }
}

许可证

请参阅 许可证

错误跟踪器

错误在此存储库的问题部分跟踪。在提交问题之前,请阅读现有的问题以确保您的问题独特。

如果问题看起来像是一个新的错误

  • 创建一个新问题
  • 描述重现您问题的步骤以及预期的结果。单元测试、屏幕截图和屏幕录制可能会有所帮助。
  • 尽可能详细地描述您的环境:Silverstripe 版本、浏览器、PHP 版本、操作系统、安装的任何 Silverstripe 模块。

请直接向模块维护者报告安全问题。请不要在错误跟踪器中报告安全问题。

开发和贡献

如果您想为此模块做出贡献,请确保您发起一个pull请求,并与模块维护者进行讨论。