ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
本节介绍如何创建签名并将其添加到请求中。 ## **主题** * 签名的工作原理 * 请求中的签署过程是什么样 * 签名步骤的摘要 * [任务 1:创建规范请求](create-canonical-request.md) * [任务 2:创建待签字符串](create-string-to-sign.md) * [任务 3:为 GSDATA Signature 计算签名](calculate-signature.md) * [任务 4:将签名信息添加到请求](add-signature-to-request.md) #### **签名的工作原理** 1. 您创建一个规范请求。 2. 您使用规范请求和一些其他信息来创建要签署的字符串。 3. 您使用自己的 gsdata api appkey 来生成一个签名密钥,并使用该签名密钥以及要签署的字符串来创建签名。 4. 您将生成的签名添加到 HTTP 请求的标头中或者作为查询字符串参数添加。 清博开放平台 收到请求后,将执行您完成的相同步骤来计算签名。之后 GSDATA接口服务器 会将计算得到的签名与您在请求中发送的签名进行比较。如果签名匹配,则处理请求。如果签名不匹配,则拒绝请求。 #### **请求中的签署过程是什么样** 以下示例演示了 HTTP 请求(不带任何签名信息)从您的客户端发送到 GSDATA 时可能的样子。 ~~~ GET http://api.gsdata.cn/weixin/v1/users?wx_name=rmrbwx&page=1&per-page=20 HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Host: api.gsdata.cn x-gsdata-date: 20150830T123600Z ~~~ 在完成签名任务之后,请将身份验证信息添加到请求中。您可通过两种方式添加身份验证信息: #### **Authorization 标头** 您可使用 Authorization 标头将身份验证信息添加到请求中。尽管该 HTTP 标头名为 Authorization,但签名信息实际上是用于身份验证的,目的是确定请求方。 Authorization 标头包含以下信息: * 用于签名的算法 (GSDATA-HMAC-SHA256) * 凭证范围(包含您的访问密钥 ID) * 已签名标头的列表 * 计算签名。该签名基于您的请求信息,由您使用 gsdata 密钥生成。该签名用于向 gsdata 确认您的身份。 下面的示例说明在您创建签名信息并将它添加到请求的 Authorization 标头之后,前面的请求看起来是什么样。 ~~~ POST http://api.gsdata.cn/weixin/v1/users?wx_name=rmrbwx&page=1&per-page=20 HTTP/1.1 Authorization: GSDATA-HMAC-SHA256 SignedHeaders=content-type;host;x-gsdata-date, Signature=d37af66cc90dc26bb2e27d2a97316b729b82589b5e4648f1ae34cb83a3f546cd content-type: application/x-www-form-urlencoded; charset=utf-8 host: api.gsdata.cn x-gsdata-date: 20150830T123600Z ~~~ ### **签名步骤的摘要** 要创建已签名的请求,请完成以下操作: * 任务 1:创建规范请求 将请求的内容(主机、操作、标头等)组织为标准(规范)格式。规范请求是用于创建待签字符串的输入之一。 * 任务 2:创建待签字符串 使用规范请求和额外信息(例如算法、请求日期、凭证范围和规范请求的摘要(哈希))创建待签字符串。 * 任务 3:为 GSDATA Signature 计算签名 使用 GSDATA 秘密访问密钥作为初始哈希操作的密钥,对请求日期、服务执行一系列加密哈希操作(HMAC 操作),从而派生签名密钥。在派生签名密钥后,通过对待签字符串执行加密哈希操作来计算签名。使用派生的签名密钥作为此操作的哈希密钥。 * 任务 4:将签名信息添加到请求 在计算签名后,将其添加到请求的 HTTP 标头或查询字符串中。