exewen / digital-signature-php-sdk
(自定义) 用于使用需要数字签名的eBay API的SDK
Requires
- php: >=7.3
- ext-curl: *
- ext-json: *
- phpseclib/phpseclib: ~3.0
- runz0rd/mapper-php: ^2.2
Requires (Dev)
- phpunit/phpunit: ^9.5
README
HTTP消息签名提供了一种机制,用于在整个HTTP消息组件中提供端到端的真实性和完整性。
此PHP SDK旨在简化生成数字签名头部的过程,并提供了一种验证数字签名头部的方法。
目录
公共API调用的数字签名
由于来自SCA(安全控制要求)的监管要求,我们要求我们的开发者为代表欧盟/英国卖家对某些API进行的每个HTTP调用添加数字签名。
此SDK是通用的,签名方案符合即将到来的IETF标准(目前还不是RFC)。
特性
此SDK旨在根据上述IETF标准生成所需的消息签名头部。SDK中还包含了一个示例。
此SDK包含以下内容
- 生成以下HTTP消息签名头部
- Content-Digest:如果有的话,此头部包含对HTTP有效载荷的SHA-256摘要(如draft-ietf-httpbis-digest-headers-11中指定),对于不包含请求有效载荷的API(例如GET请求)不需要发送。
- Signature-Input:此头部指示包含哪些头部和伪头部,以及计算签名时它们使用的顺序。它按照draft-ietf-httpbis-message-signatures-16中的规定创建。
- Signature:签名头部的值按照第3.1节,创建签名,在IETF草案-ietf-httpbis-message-signatures-16中描述创建。它使用密钥管理API生成的私钥值。
- x-ebay-signature-key:此头部包含使用密钥管理API创建的JWE。
generateSignatureHeaders
方法用于生成所有必需的头部
有关eBay API的数字签名的更多信息,请参阅文档。
用法
先决条件
PHP: 7.3 or higher
安装
为了使用此SDK,请通过composer将其添加到您的PHP应用程序中
composer require ebay/digital-signature-php-sdk composer update
在您的代码中,添加此行以返回包括签名头部在内的所有头部
$headers = $signature->generateSignatureHeaders($yourHeaders, $apiUrl, $method, $body);
请参阅示例
配置
为了运行示例应用程序,需要更新example-config.json。
{ "digestAlgorithm": "<Algorithm used for generating content digest>", "jwe": "<JWE generated using Key Management API>", "privateKey": "<Path to private key generated using Key Management API>", "privateKeyStr": "<(alternative to privateKey) Private key generated using Key Management API, including -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- key headers>", "signatureParams": "<List of signature params>" }
参数
注意:您可以参考example-GET.php或example-POST.php以获取如何使用SDK的示例(分别用于无请求体的GET调用和有请求体的POST调用)。
运行示例
cd examples composer update php example-GET.php # or php example-POST.php
- 签名配置示例:example-config.json。
许可
版权所有 2023 eBay Inc. 开发者:Ulrich Herberg 和 Arturas Sendrauskas
本软件按照Apache License,版本2.0(以下简称“许可协议”)许可;除非符合许可协议,否则不得使用本软件。您可以在以下地址获取许可协议的副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则按照许可协议分发的软件按“现状”提供,不提供任何明示或暗示的保证或条件。有关许可协议具体规定的权限和限制,请参阅许可协议。