api postmain 鉴权_API接口鉴权方法

API接口鉴权方法

API接口鉴权方法

API 使用签名方法(Signature)对接口进行鉴权。每一次请求都需要在请求中包含签名信息, 以验证用户身份。

在第一次使用API之前,用户首先需要在目标网站上申请安全凭证,安全凭证包括 SecretId 和 SecretKey, SecretId 是用于标识 API 调用者的身份,SecretKey是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey 必须严格保管。避免泄露。

### 1. 申请安全凭证

具体看目标网站申请方法

### 2. 生成签名串

假设上一步申请的 SecretId 和 SecretKey 分别是:

**SecretId**: AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA

**SecretKey**: Gu5t9xGARNpq86cd98joQYCN3Cozk1qA

以 查询实例列表 请求为例, 请求参数为:

方法名: Action=DescribeInstances

SecretId= AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA

当前时间戳: Timestamp=1408704141

随机正整数: Nonce=345122

区域: Region=gz

接口签名的详细步骤如下:

#### 1. 对参数排序

对请求参数按参数名做字典序升序排列, 结果如下:

{ 'Action' : 'DescribeInstances', 'Nonce' : 345122, 'Region' : 'gz', 'SecretId' : 'AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA', 'Timestamp' : 1408704141}

#### 2. 拼接请求字符串

把上一步排序好的请求参数, 格式化成 k=v,然后用"&"拼接在一起。注意不包括Signature参数,v为原始值而非url编码后的值。结果为:

Action=DescribeInstances&Nonce= 345122&Region=gz&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1408704141

#### 3. 拼接签名源文字符串

拼接签名原文时需要如下参数:

请求方法: 支持 POST 和 GET 方式, 这里架设为 GET 请求, 注意 GET 为全大写

请求主机: api.web3.xin, 根据接口所属模块不同域名也不同

请求路径: /v2/index.php

请求字符串: 即前 2 步生成的请求字符串

签名源文的拼接规则为:

请求方法 + 请求主机 +请求路径 + ? + 请求字符串

拼接结果为:

GET api.web3.xin/v2/index.php?Action=DescribeInstances&Nonce= 345122&Region=gz&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1408704141

#### 4. 生成签名串

1. API 使用 HMAC-SHA1 算法对请求进行签名

2. 签名串需要使用 Base64 编码

3. 发送请求时, 对签名串进行 Url Encode

#### 以 PHP 语言为例:

$secretKey = 'Gu5t9xGARNpq86cd98joQYCN3Cozk1qA';

$srcStr = 'GETcvm.api.qcloud.com/v2/index.php?Action=DescribeInstances&Nonce=345122&Region=gz&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1408704141';

$signStr = base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true));

echo $signStr;

这里得到的签名串为:

`HgIYOPcx5lN6gz8JsCFBNAWp2oQ=`

使用其它程序设计语言开发时, 可用上面示例中的原文进行签名验证, 得到的签名串与例子中的一致即可

#### 5. 添加签名, 发送请求

1. 请求参数中添加 Signature 参数, 参数值为上一步生成的签名串, 并且对签名进行 Url Encode

2. 发送 HTTPS 协议的 GET 请求即可得到 JSON 字符串格式的接口返回值

最终的请求 URL 为:

https://api.web3.xin/v2/index.php?Action=DescribeInstances&Nonce=345122&Region=gz&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Signature=HgIYOPcx5lN6gz8JsCFBNAWp2oQ%3D&Timestamp=1408704141

将示例代码中的 YOUR_SECRET_ID 和 YOUR_SECRET_KEY 替换成实际的 SecretId 和 SecretKey

示例代码仅供参考, 请根据实际情况使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值