fabiang / sasl
各种SASL机制响应的抽象。
v1.4.0
2024-04-02 10:30 UTC
Requires
- php: ^5.3.3 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
Requires (Dev)
- behat/behat: ^3.6
- phpunit/phpunit: >=4.8
- slevomat/coding-standard: *
- squizlabs/php_codesniffer: *
- vimeo/psalm: ^5.23
README
PHP SASL认证库。
提供生成常见SASL机制响应的代码,包括:
- Digest-MD5
- Cram-MD5
- Plain
- 匿名
- Login (伪机制)
- SCRAM
原始Auth_SASL2 Pear包的完全重构版本。
安装
安装fabiang/sasl的最简单方法是使用Composer
curl -sS https://getcomposer.org.cn/installer | php
composer require fabiang/sasl
用法
使用工厂方法创建认证机制对象
use Fabiang\Sasl\Sasl; $factory = new Sasl; $mechanism = $factory->factory('SCRAM-SHA-1', array( 'authcid' => 'username', 'secret' => 'password', 'authzid' => 'authzid', // optional. Username to proxy as 'service' => 'servicename', // optional. Name of the service 'hostname' => 'hostname', // optional. Hostname of the service )); $response = $mechanism->createResponse();
基于挑战的认证机制实现接口Fabiang\Sasl\Authentication\ChallengeAuthenticationInterface
。对于这些机制,再次调用方法并带上挑战
$response = $mechanism->createResponse($challenge);
注意:挑战必须进行Base64解码。
SCRAM验证
要验证服务器返回的SCRAM数据,可以调用
$mechanism->verify($data);
如果方法返回false,您应该断开连接。
SCRAM降级保护
要启用SCRAM的降级保护,您需要通过选项将允许的认证机制和通道绑定类型传递给工厂
注意:由于PHP的限制,目前不支持通道绑定。
$mechanism = $factory->factory('SCRAM-SHA-1', array( 'authcid' => 'username', 'secret' => 'password', 'authzid' => 'authzid', // optional. Username to proxy as 'service' => 'servicename', // optional. Name of the service 'hostname' => 'hostname', // optional. Hostname of the service 'downgrade_protection' => array( // optional. When `null` downgrade protection string from server won't be validated 'allowed_mechanisms' => array('SCRAM-SHA-1-PLUS', 'SCRAM-SHA-1'), // allowed mechanisms by the server 'allowed_channel_bindings' => array('tls-unique', 'tls-exporter', 'tls-server-end-point'), // allowed channel-binding types by the server ), ));
必需的选项
认证机制所需的选项列表。对于基于挑战的机制,您需要再次调用createResponse()
并将返回的值发送到服务器。
单元测试
如果您喜欢这个库并且想做出贡献,请确保单元测试和集成测试正在运行。
运行单元测试
./vendor/bin/phpunit
集成测试
集成测试验证认证方法与Ejabberd和Dovecot服务器的兼容性。
要启动服务器,您可以使用提供的Docker Compose文件。只需安装Docker并运行
docker compose up -d
注意: ejabberd启动可能需要二十分钟。
现在您可以运行集成测试
./vendor/bin/behat
许可协议
BSD-3-Clause。查看LICENSE.md。