目录

1. 前提概要

2. Authorization 介绍

Python 版本完整案例

3. 拼接 Authorization

Task 1: Create a canonical request for Signature Version 4

Task 2: Create a string to sign for Signature Version 4

Task 3: Calculate the signature for AWS Signature Version 4

各版本的签名代码(Java, C#, Python, Ruby, and JavaScript)

常见签名异常

Task 4: Add the signature to the HTTP request

完整 Authorization 代码

Examples: Signature Calculations in AWS Signature Version 4

总结

对接亚马逊 SP-API(Selling Partner API) 第五章:Reports 模块


1. 前提概要

1.1. 如果打算使用 SDK 的,可跳过这一章

1.2. 本章作了解就可以了。具体 demo 参考下一章【Reports 模块】

1.3. 每个 HTTP 请求都需要将 Authorization 放在 Headers 中

2. Authorization 介绍

官方文档

https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#step-4-create-and-sign-your-request

Python 版本完整案例

Examples of the complete Signature Version 4 signing process (Python).

你有两种方式可以添加 Authorization(具体内容查询官方文档)(仅针对SP-API而言

Authorization header

Query string

3. 拼接 Authorization

下面部分是所有 AWS 的签名方式。

Task 1: Create a canonical request for Signature Version 4

将请求的内容(主机、操作、标头等)组织为标准(规范)格式。规范请求是用于创建待签字符串的输入之一。

demo

CanonicalRequest =
  HTTPRequestMethod + '\n' +
  CanonicalURI + '\n' +
  CanonicalQueryString + '\n' +
  CanonicalHeaders + '\n' +
  SignedHeaders + '\n' +
  HexEncode(Hash(RequestPayload))

Hash 表示生成消息摘要的函数,通常是 SHA-256。(在该过程稍后的阶段中,您将指定要使用的哈希算法。)

HexEncode 表示以小写字母形式返回摘要的 base-16 编码的函数。

Task 2: Create a string to sign for Signature Version 4

使用规范请求和额外信息(例如算法、请求日期、凭证范围和规范请求的摘要(哈希))创建待签字符串。

Credential

Dimension Description Example
Date An eight-digit string representing the year (YYYY), month (MM), and day (DD) of the request.日期相关格式问题:处理签名版本 4 中的日期 20190430
AWS region The region you are sending the request to. See Selling Partner API endpoints. us-east-1
Service The service you are requesting. You can find this value in the endpoint. See Selling Partner API endpoints. execute-api
Termination string A special termination string. For AWS Signature Version 4, the value is aws4_request aws4_request

example

20201022/us-east-1/https://sellingpartnerapi-na.amazon.com/aws4_request

简而言之,这几个货都是小写的。

Task 3: Calculate the signature for AWS Signature Version 4

使用 AWS 秘密访问密钥作为初始哈希操作的密钥,对请求日期、区域和服务执行一系列加密哈希操作(HMAC 操作),从而派生签名密钥。在派生签名密钥后,通过对待签字符串执行加密哈希操作来计算签名。使用派生的签名密钥作为此操作的哈希密钥。

Signature

官方文档

https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

各版本的签名代码(Java, C#, Python, Ruby, and JavaScript)

Examples of how to derive a signing key for Signature Version 4.

常见签名异常

https://docs.aws.amazon.com/general/latest/gr/signature-v4-troubleshooting.html

官方测试 demo

key = 'wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY'
dateStamp = '20120215'
regionName = 'us-east-1'
serviceName = 'iam'

您的程序将为 getSignatureKey 中的值生成以下值。请注意,这些值是二进制数据的十六进制编码表示形式;密钥本身和中间值应该是二进制格式。

kSecret = '41575334774a616c725855746e46454d492f4b374d44454e472b62507852666943594558414d504c454b4559'
kDate = '969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d'
kRegion = '69daa0209cd9c5ff5c8ced464a696fd4252e981430b10e3d3fd8e2f197d7a70c'
kService = 'f72cfd46f26bc4643f06a11eabb6c0ba18780c19a8da0c31ace671265e3c87fa'
kSigning = 'f4780e2d9f65fa895f9c67b32ce1baf0b0d8a43505a000a1a9e090d414db404d'

Task 4: Add the signature to the HTTP request

Component Description
The algorithm used for signing The hash algorithm used throughout the signing process. The Selling Partner API requires SHA-256. You specify this in Step 4. Create and sign your request. AWS4-HMAC-SHA256
Credential Your AWS access key ID plus the Credential scope. You get your AWS access key ID in Step 2. Create an IAM user. user access key ID + Credential
SignedHeaders A list of all the HTTP headers that you included with the signed request. For an example, see Step 3. Add headers to the URI.
Signature The signature calculated in Step 4. Create and sign your request. Signature

example

Authorization: AWS4-HMAC-SHA256 Credential={USER_IAM}/{Credential}, SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date, Signature={Signature}

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/https://sellingpartnerapi-na.amazon.com/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE

完整 Authorization 代码

对接亚马逊 SP-API(Selling Partner API) 第五章:Reports 模块

Examples: Signature Calculations in AWS Signature Version 4

总结

对接亚马逊 SP-API(Amazon Selling Partner API) 第五章:Reports 模块

对接亚马逊 SP-API(Amazon Selling Partner API) 第四章:签名相关推荐

  1. 亚马逊国际获得AMAZON商品详情API,数据接口

    万邦亚马逊国际获得AMAZON商品详情 API 返回值说明 item_get-获得AMAZON商品详情 onebound.amazon.item_get 公共参数 请求地址: 跨境电商平台接口提供商 ...

  2. 亚马逊常用API接口,亚马逊国际获得AMAZON商品详情 API 返回值说明

    为了进行电商平台亚马逊的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载亚马逊API的SDK并掌握基本的API ...

  3. 学习使用亚马逊国际获得AMAZON商品详情 API

    学习目标: 快速掌握接口的使用 亚马逊的API开发接口,我们需要做下面几件事情. 1)开放平台注册开发者账号: 2)然后为每个淘宝应用注册一个应用程序键(App Key) : 3)下载亚马逊API的S ...

  4. 万邦亚马逊国际获得AMAZON商品详情 API 返回值说明

    item_get-获得AMAZON商品详情  注册开通 onebound.amazon.item_get 公共参数 请求地址: https://api-gw.onebound.cn/amazon/it ...

  5. 亚马逊国际获得AMAZON商品详情 API

    以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Turbo item_g ...

  6. 亚马逊国际获得AMAZON商品详情 API 返回值说明

    请求参数:num_iid=B09DG3RXXQ 参数说明:num_iid:AMAZON商品ID(非.cn的请在后加 -com) API测试工具 响应示例 {     "item": ...

  7. 亚马逊SP-API对接实践解析(amazon selling partner api)

    1.前言 亚马逊(amazon)在2020年10月推出了新的替代MWS的api方案,称为Selling Partner API(SP-API). SP-API在授权方式.权限管理.覆盖站点.支持的卖家 ...

  8. 对接亚马逊 SP-API(Amazon Selling Partner API) 第一章:注册帐号

    目录 1. SP-API 基本介绍 1.1. 从 MWS 迁移到 SP-API 1.2. SP-API 开发者指南 1.3. MWS 与 SP-API 接口映射 1.4. SP-API 的站点 2. ...

  9. 对接亚马逊 SP-API(Amazon Selling Partner API) 第二章:授权

    目录 1. 授权销售伙伴 API 应用程序 1.1. Marketplace Appstore workflow 1.2. Website workflow(推荐使用) 1.3. 自行授权(仅限店铺本 ...

最新文章

  1. element ui 图片控件 排序_JAVA全栈面试前端基础之四 Vue+Element框架快速开发
  2. 【C】数组数组初始化总结
  3. MySQL时间慢了八个小时
  4. C# 参考之访问关键字:base、this
  5. Linux_KVM虚拟机
  6. 编译乱序(Compiler Reordering)
  7. 学校通用计算机保护,浅谈学校计算机教室软件系统的保护.docx
  8. Servlet 和Filter的生命周期
  9. python时间戳_Python-强大的模块功能库-No11
  10. ANSI C: union
  11. pytorch源码解析2——数据处理torch.utils.data
  12. Java工程师学习指南
  13. 博为峰Java技术文章 ——JavaSE Swing焦点事件的处理
  14. lanswich交换机远程TELNET登录
  15. Fuji-ImageJ分割中央凹无血管区
  16. Linux下网络传输(模拟路由器)
  17. IE安全系列:IE浏览器的技术变迁(上)
  18. PEAP-MSCHAPV2
  19. Docker容器技术(三)
  20. css 设置文字强制不换行

热门文章

  1. 【VS】VS远程调试说明文档(局域网内)
  2. Django笔记 CMS框架Mezzanine 2
  3. Gensim加载GloVe提供的词向量的诸多Bug之终极解决
  4. 【Java】求最大公约数
  5. 自媒体赚钱系列连载03:音乐人有收益自媒体平台大全
  6. 最实用的网上赚钱方法:这个方法真的很实用哦!
  7. 多任务学习时转角遇到Bandit老虎机
  8. Base64解码过程必须关注的问题
  9. 大数据环境下,征信,真的那么美好吗?
  10. openstack块存储服务基础:Linux LVM硬盘管理及LVM扩容