调用密钥对认证 API

最近更新时间:2024-11-13 15:30:52

我的收藏

操作场景

该任务指导您对密钥对认证的 API 发起调用。

前提条件

创建密钥对鉴权的API

1. API 网关控制台,在服务列表,新建一个服务,再新建一个 API,设置鉴权类型时选择“密钥对”,API 创建详细步骤可参见 创建 API 概述
2. 将 API 所在服务发布至发布环境,详细操作步骤可参见 服务发布与下线
3. 在控制台 调用凭证 > 密钥 界面新建一个密钥对,创建方法可参见 密钥管理。请注意,此处地域需要和服务所在地域保持一致。
4. 在控制台使用计划界面新建一个使用计划。
4.1 在使用计划详情页,将该使用计划与已创建的密钥对绑定,详细操作步骤可参见 使用计划示例
4.2 在使用计划详情页,将该使用计划与 API 绑定,或者与 API 所在服务的发布环境进行绑定。

确认信息

在发起调用前,您必须拥有所要调用的 API 的 SecretId 和 SecretKey,了解所调用 API 的请求路径、请求方法、请求参数等信息。

工具准备

您可以通过浏览器、浏览器插件、Postman 工具、客户端等来源发起请求,如果是简单验证,建议使用 Postman 工具来发起请求。

调用样例

地址

http://service-xxxxxxxx-1234567890.ap-guangzhou.apigateway.myqcloud.com/release/path
//release是因为在前提条件中我们选择了发布环境
//path请填入您所要调用的 API 服务的路径,是您在新建API时自行定义的。
URL 拼接规则为:服务路径 + 环境参数 + API path。具体拼接规则参考 服务访问中的示例。

方法

POST

请求体

QueryParam_a=value1&QueryParam_b=value2

请求头

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-cn
Connection: Keep-Alive
Host: service-xxxxxxxx-1234567890.ap-guangzhou.apigateway.myqcloud.com/release
User-Agent: Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding: gzip,deflate
Content-Type: application/x-www-form-urlencoded;charset=utf-8
//请求体类型,请根据实际请求体内容设置。
X-Client-Proto: http
X-Client-Proto-Ver: HTTP/1.1
X-Real-IP: 163.xxx.xx.244
X-Forwarded-For: 106.xxx.xx.102, 163.xxx.xx.244
Date: Sun, 21 Sep 2017 06:18:21 GMT
Authorization: hmac id="AKID**************", algorithm="hmac-sha1", headers="Date Host", signature="630123456789da9c"
//签名,具体签名方法见认证与安全中的密钥计算方法
最终发送的 HTTP 请求内至少包含两个 Header:Date 和 X-Date 二选一以及 Authorization,可以包含更多 header。如果使用 Date Header,服务端将不会校验时间;如果使用 X-Date Header,服务端将校验时间。
Date Header 的值为格林威治时间(GMT)格式的 HTTP 请求构造时间,例如 Fri, 09 Oct 2015 00:00:00 GMT。
X-Date Header 的值为格林威治时间(GMT)格式的 HTTP 请求构造时间,例如 Mon, 19 Mar 2018 12:08:40 GMT。X-Date Header 里的时间和当前时间的差值不能超过15分钟。
Authorization Header的组成可参见 密钥对认证,多种语言生成签名的样例可参见 多种语言生成签名

响应处理

响应码

响应码(code)
含义
200 ≤ code < 300
成功
300 ≤ code < 400
重定向,需要进一步的操作以完成请求
400 ≤ code < 500
客户端错误
code > 500
服务端错误

响应头

Content-Type: text/html; charset=UTF-8
Content-Length: 122
Date: Sun, 21 Sep 2017 06:46:04 GMT
Server: squid/3.5.20
Connection: close
Set-Cookie:1P_JAR=2017-09-18-06; expires=Mon, 25-Sep-2017 06:46:04 GMT; path=/; domain=.qq.com
X-Secret-ID:AKID****************
//密钥对中的 secret_id
X-UsagePlan-ID:XXXXXXXX
//密钥对绑定的使用计划 ID
X-RateLimit-Limit:500
//使用计划中的限流配置
X-RateLimit-Used:100/125
//使用计划中的限流使用情况