aidan / simplesamlphp-module-simpletotp
SimpleSAMLphp 的一个高度可配置且易于使用的基于 TOTP 的双因素认证处理模块
Requires
This package is not auto-updated.
Last update: 2024-10-02 10:19:52 UTC
README
SimpleTOTP 是一个 SimpleSAMLphp 认证处理过滤器,它允许在身份提供者或服务提供者(或两者)上使用基于 基于时间的单次密码算法(TOTP)作为第二因素认证机制。
已在 iOS 和 Android 上与 Google Authenticator 进行了测试。
为什么?
尽管已经有几个针对 SimpleSAMLphp 的双因素认证模块存在,但它们都是作为 认证源 实现的。
作为一个认证处理过滤器,此模块在许多方面都具有灵活性
- 对 TOTP 秘密存储位置无感知
- 可以在选定的服务提供者或整个身份提供者上启用
使用方法
与任何其他认证处理过滤器一样,此模块需要在 config.php 或特定服务提供者或身份提供者的元数据中的 authproc 数组中进行配置。
先决条件
secret_attr
需要在属性有效负载中可用,因为它用于生成用于比较的令牌。这可以通过使用其他认证处理过滤器来实现,以查找某种外部数据库(SQL、LDAP 等)。
调用模块后,该属性将被移出用户属性数组。为了安全起见,应采取额外步骤确保删除此属性。这可以通过使用 core:AttributeAlter
过滤器或类似方法来实现。
示例
放置在 config.php 的 authproc 中或适当的元数据实体中
10 => array( 'class' => 'simpletotp:mfa', 'secret_attr' => 'ga_secret', //default 'enforce_mfa' => false, //default 'not_configured_url' => NULL, //default 'validation_timeout' => <int>, //default 60 (units: minutes) - optional timeout value for re-validation ),
放置在 config.php 的 authproc 中,作为最后要处理的函数之一
99 => array( 'class' => 'core:AttributeAlter', 'subject' => 'ga_secret', 'pattern' => '/.*/', '%remove', ),
以下配置将放置在 authsource.php 中。此模块默认启用,但如果未启用,请确保在 modules/exampleauth 目录中创建一个名为 enable 的文件。
'example-userpass' => array( 'exampleauth:UserPass', 'student:studentpass' => array( 'uid' => array('test'), 'ga_secret' => array('4HX4WBKVIJWDUV5I'), 'eduPersonAffiliation' => array('member', 'student'), ), ),
使用用户名:student 密码:studentpass 登录后,您将需要 TOTP。4HX4WBKVIJWDUV5I 是一个可以由访问 /simplesaml/module.php/simpletotp/generate_token.php 生成的密钥。
每次都会生成一个随机数。您还可以使用二维码将您的 IdP 注册到 FreeOTP 或 Google Authenticator 等应用程序。
注意:为了使 TOTP 的工作,您必须确保服务器上的时钟同步。如果不一致,则永远不会生成匹配的令牌,并且认证将失败。
安装
通过 Git
在 SimpleSAMLphp 模块目录中执行简单的 git clone
即可。
通过 Composer
composer.phar require aidan/simplesamlphp-module-simpletotp
TODO
- 改进使用文档,包括使用外部数据库作为数据源的示例
- 添加基本的暴力破解预防