99designs/http-signatures
最新稳定版本:4.0.0
Composer 安装命令:
composer require 99designs/http-signatures
包简介
Sign and verify HTTP messages
README 文档
README
PHP implementation of HTTP Signatures draft specification; allowing cryptographic signing and verifying of PSR7 messages.
See also:
- https://github.com/99designs/http-signatures-guzzlehttp
- https://github.com/99designs/http-signatures-ruby
Usage
Add 99designs/http-signatures to your composer.json.
Configure a context with your algorithm, keys, headers to sign. This is best placed in an application startup file.
use HttpSignatures\Context; $context = new Context([ 'keys' => ['examplekey' => 'secret-key-here'], 'algorithm' => 'hmac-sha256', 'headers' => ['(request-target)', 'Date', 'Accept'], ]);
If there's only one key in the keys hash, that will be used for signing.
Otherwise, specify one via 'signingKeyId' => 'examplekey'.
Messages
A message is assumed to be a PSR-7 compatible request or response object.
Signing a message
$context->signer()->sign($message);
Now $message contains the signature headers:
$message->headers->get('Signature'); // keyId="examplekey",algorithm="hmac-sha256",headers="...",signature="..." $message->headers->get('Authorization'); // Signature keyId="examplekey",algorithm="hmac-sha256",headers="...",signature="..."
Verifying a signed message
$context->verifier()->isValid($message); // true or false
Symfony compatibility
Symfony requests normalize query strings which means the resulting request target can be incorrect. See symfony/psr-http-message-bridge#30
When creating PSR-7 requests you use withRequestTarget to ensure the request target is correct. For example
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; use Symfony\Component\HttpFoundation\Request; $symfonyRequest = Request::create('/foo?b=1&a=2'); $psrRequest = (new DiactorosFactory()) ->createRequest($symfonyRequest) ->withRequestTarget($symfonyRequest->getRequestUri());
Contributing
Pull Requests are welcome.
License
HTTP Signatures is licensed under The MIT License (MIT).
统计信息
- 总下载量: 745.85k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 47
- 点击次数: 3
- 依赖项目数: 4
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04