tvdijen / simplesamlphp-module-cmdotcom
短信作为第二因素模块
Requires
- php: ^8.0
- giggsey/libphonenumber-for-php-lite: ^8.13.4
- guzzlehttp/guzzle: ^7.5.0
- simplesamlphp/assert: ^0.8.0
- simplesamlphp/composer-module-installer: ^1.3.2
- simplesamlphp/simplesamlphp: ^2.0.0-rc2
Requires (Dev)
README
注意
此模块自2024年6月13日起已被废弃。它仍然可以使用,我不介意重新启用它,但我的个人使用场景已不存在。如果您需要此模块,请随时联系我,我们可以共同解决问题。
此模块作为认证处理过滤器实现。这意味着它可以在全局config.php文件或SP远程或IdP托管元数据中进行配置。
先决条件
要使用此模块,您必须在CM.com注册以获取其RESTful API的API密钥。
如何设置模块
首先,您需要启用模块;在config.php
中,搜索module.enable
密钥,并添加cmdotcom
,值设置为true
'module.enable' => [ 'cmdotcom' => true, … ],
为了在此模块中处理通行码短信,您需要设置必填的API密钥,以与CM.com RESTful API交互,在productToken
设置中。
您可以可选地设置mobilePhoneAttribute
为包含用户手机号码的属性的名称。如果此设置未设置,则默认属性为mobile
。
如果定义的上述属性对于用户不可用,将显示错误消息,用户将不允许通过过滤器。请确保您选择所有用户都可用的属性。
默认情况下,短信将来自Example
,但可以使用可选的originator
设置进行更改。电话号码的最大长度为16位数字或11个字母数字字符[a-zA-Z0-9]。例如:'CMTelecom'。
另一个默认情况是,通过短信接收的OTP可以在三分钟内输入。可以通过配置可选的validFor
设置来调整代码的有效时间(以秒为单位)。
最后,可以将OTP代码自动推送到手机应用。为此,将可选的allowPush
设置为true
,并将appKey
设置为与您的手机应用匹配。
此模块使用libphonenumber-for-php来解析接收者的电话号码并将它们规范化。如果您遇到无法发送的短信,您可以尝试将您的defaultRegion
设置为您的区域的CLDR双字母区域代码格式。
将过滤器添加到您的身份提供者托管元数据authproc过滤器列表中,指定您选择的属性。
90 => [ 'class' => 'cmdotcom:OTP', 'productToken' => 'secret', 'mobilePhoneAttribute' => 'mobile', 'originator' => 'CM Telecom', 'validFor' => 600, 'defaultRegion' => 'NL', ],
此设置完全不使用持久存储。这意味着用户每次登录时都总是需要输入通行码。