mle86 / request-authentication
一个用于API请求认证的简单库。
Requires
- php: >=7.1
- paragonie/halite: ^4.4||^3.4
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- whitehat101/apr1-md5: ^1.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.3
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^7
- psr/simple-cache: ^1.0
- roave/security-advisories: dev-master
- symfony/http-foundation: ^4.0
Suggests
- guzzlehttp/guzzle: The library can be used as a GuzzleHttp middleware.
- symfony/http-foundation: The library can process HttpFoundation's Request and Response interfaces.
README
此PHP库提供了对出站API请求进行认证的通用接口,以及对入站API请求认证进行验证的接口。
该库遵循MIT许可证发布。
安装
通过Composer: $ composer require mle86/request-authentication
或将以下内容插入到您的项目中的composer.json
文件中
"require": { "mle86/request-authentication": "^0" }
依赖项和最小PHP版本
-
PHP 7.1
-
用于支持
$apr1$
哈希的whitehat101/apr1-md5包,用于BasicHashAuthenticationMethod
工作流程
此库包含多个AuthenticationMethod类。
每个类代表一种请求认证和验证机制。例如,BasicAuthenticationMethod添加一个Authorization: Basic …
HTTP头到出站请求,并验证入站请求中的该头是否与已知用户名和密码列表匹配。
通常,不会直接使用AuthenticationMethod类(除了实例化它们),而是使用RequestAuthenticator
和RequestVerifier
包装类,它们依赖于AuthenticationMethod。
要签署/认证出站请求,您需要一个包装在RequestAuthenticator
实例中的AuthenticationMethod
实例、客户端ID和客户端密钥以及要签署的请求。authenticate()
方法将添加必要的认证头到请求中,以便可以发送。
要验证入站请求,您需要一个相同类的AuthenticationMethod
实例,包装在RequestVerifier
实例中,以及一个将请求的客户端ID映射到用于签署请求的相同客户端密钥的KeyRepository
。
(在PublicKeyMethod类的情况下,客户端将使用其私钥进行签名,并且KeyRepository必须返回客户端的公钥。)
类和接口
- 主要包装类
- RequestAuthenticator包装类,
- RequestVerifier包装类。
- AuthenticationMethod主接口
- RequestInfo数据传输对象。
- KeyRepository基类
- RequestIdList接口
- Exception类。