ebay/digital-signature-php-sdk

用于使用需要数字签名的 eBay API 的 SDK

1.0.7 2023-05-11 16:46 UTC

README

HTTP 消息签名提供了一种机制,用于保证 HTTP 消息组件的端到端真实性和完整性。

此 PHP SDK 设计用于简化生成数字签名头的过程,并提供了一种验证数字签名头的方法。

目录

公共 API 调用的数字签名

由于来自 SCA 的监管要求,针对我们的欧洲/英国卖家,我们要求我们的开发者为代表 EU/UK 卖家对某些 API 的每个 HTTP 调用添加数字签名。

此 SDK 是通用的,签名方案符合以下 IETF 标准

特性

此 SDK 的目的是根据上述 IETF 标准生成所需的消息签名头,SDK 中还包含了一个示例。

此 SDK 包含以下内容

  • 生成以下 HTTP 消息签名头
    • Content-Digest:此头部包括对 HTTP 有效载荷(如 RFC 9530 摘要字段中指定)的 SHA-256 摘要(如果有)。对于不包含请求有效载荷的 API(例如 GET 请求),无需发送。
    • Signature-Input:此头部指示包含哪些头部和伪头部,以及它们在计算签名时的顺序。它根据 RFC 9421 HTTP 消息签名创建。
    • Signature:签名头的值根据 RFC 9421 中的第 3.1 节“创建签名”描述创建。它使用由 密钥管理 API 生成的私钥值。
    • x-ebay-signature-key:此头部包含使用 密钥管理 API 创建的 JWE。
  • 使用 generateSignatureHeaders 方法生成所有必需的头部

有关 eBay API 的数字签名的更多详细信息,请参阅文档

用法

先决条件

PHP: 7.4 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.phpexample-POST.php 了解如何使用 SDK(分别用于没有请求体的 GET 调用和有请求体的 POST 调用)。

运行示例

cd examples
composer update
php example-GET.php # or php example-POST.php

许可证

版权所有2023 eBay Inc. 开发者:Ulrich Herberg 和 Arturas Sendrauskas

根据Apache License,版本2.0(以下简称“许可证”);除非遵守许可证,否则您不得使用此文件。您可以在以下地址获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或经书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何形式的明示或暗示保证。有关许可证权限和限制的具体语言,请参阅许可证。