sagacorp/http-signatures-php

使用 HMAC 和 RSA 密钥对 PSR-7 HTTP 消息进行签名和验证

1.0.0 2023-08-24 15:00 UTC

This package is auto-updated.

Last update: 2024-09-24 17:25:23 UTC


README

Build Status Documentation Status

PHP 实现了 签名 HTTP 消息 规范草稿;允许对 PSR-7 消息 进行加密签名和验证。

特性

  • 根据 签名 HTTP 消息草稿 IETF RFC 版本 10 签名 HTTP 消息
  • 使用 HMAC 签名和验证消息
  • 使用非对称密钥签名和验证消息
    • RSA、DSA、EC
  • 添加一个 Digest 头部,或者在签名时自动添加头部(单一操作)
  • 在验证签名时验证 Digest 头部

有关此库的完整文档可以在 Read The Docs 上找到

警告:此库的第 11 版包含了 phpseclib 在其 3.0 版本实现 上的持续工作。如果遇到任何问题,请记录问题,但鉴于库尚未稳定或完全审查,建议谨慎行事,或者保持在此库的 v10 版本,直到 phpseclib 3.0 完成,并且此库的主版本号升级。

简单用法

liamdennehy/http-signatures-php 添加到您的 composer.json 文件中。

  • 消息假定是 PSR-7 兼容的请求或响应。
  • 使用 Context 对象来配置签名参数,并准备验证功能。
  • signWithDigest 函数将添加 Digest 头部,并在新的 Signature 头部中数字签名消息。

在发送之前对 PSR-7 请求 $message 进行签名

  use HttpSignatures\Context;

  $context = new HttpSignatures\Context([
    'keys' => ['mykey' => file_get_contents('/path/to/privatekeyfile')],
    'algorithm' => 'rsa-sha256',
    'headers' => ['(request-target)', 'Date'],
  ]);

  $context->signer()->signWithDigest($message);

有关其他用例的此库的完整文档可以在 Read The Docs 上找到

贡献

欢迎提交拉取请求,如果您遇到任何问题,也欢迎提交 问题报告

注意:由于参考实现对 composer 依赖项,在 PHP 7.1 上或通过使用以下命令手动删除不兼容的依赖项(为可读性而包裹)之前,无法进行本地开发:

  composer remove --dev \
  nyholm/psr7 nyholm/psr7-server riswallsmith/buzz \
  endframework/zend-httphandlerrunner

许可证

HTTP Signatures PHP 库采用 MIT 许可证 (MIT) 许可。

库的文档采用 Creative Commons Attribution-ShareAlike 4.0 国际 (CC BY-SA 4.0) 许可。

详细信息请参阅 LICENSE 文件