鉴权说明
公共接口规范
接口地址
https://ctgcdn.esurfingcloud.com
公共请求头
头域(Header) | 说明 | 是否必须 |
---|---|---|
Authorization | 该值格式为: Bearer {token} ,Bearer是固定前缀,token值的获取参考下面的说明 | 是 |
Content-Type | application/json | 是 |
错误信息格式
参数名 | 类型 | 说明 |
---|---|---|
error | string | 有关该错误的详细说明 |
{
'error': 'Invalid parameter signature.'
}
获取token
获取access_key 和 secret_key:
AccessKey
,跳转到秘钥管理页面,在此可复制对应的access_key 和 secret_key 的值计算signature方法:
x-request-date
发起请求的时间,格式遵循http://tools.ietf.org/html/rfc1123
标准,如Wed, 21 Nov 2018 01:29:20 GMT,
有效时间范围是5分钟内
python
import hashlib
import hmac
from datetime import datetime
def generate_sign(access_key,secret_key):
'''
返回x_request_date 和sign 值
:param ak:
:param sk:
:return:
'''
GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
x_request_date = datetime.utcnow().strftime(GMT_FORMAT)
sign = hmac.new(secret_key.encode(), (x_request_date + access_key + secret_key).encode(), hashlib.sha512).hexdigest()
return x_request_date,sign
access_key = '8965xxxxx'
secret_key = '7fca6a33333373sssss'
x_request_date,sign = generate_sign(access_key,secret_key)
java
private String hmacSHA512(String data,String key) {
String result = "";
byte[] bytesKey = key.getBytes();
final SecretKeySpec secretKey = new SecretKeySpec(bytesKey, "HmacSHA512");
try {
Mac mac = Mac.getInstance("HmacSHA512");
mac.init(secretKey);
final byte[] macData = mac.doFinal(data.getBytes());
byte[] hex = new Hex().encode(macData);
result = new String(hex, "ISO-8859-1");
} catch (NoSuchAlgorithmException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (InvalidKeyException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return result;
}
php
hash_hmac("sha512", x_request_date . access_key . secret_key, secret_key)
nodejs
var hash = crypto.createHmac('sha512', secret_key);
hash.update(x_request_date + access_key + secret_key);
var hashed_data = hash.digest();
go
package main
import (
"crypto/hmac"
"crypto/sha512"
"fmt"
)
func main() {
//hmac ,use sha512
key := []byte("secret_key")
mac := hmac.New(sha512.New, key)
mac.Write([]byte("x_request_date + access_key + secret_key"))
fmt.Printf("%x\n", mac.Sum(nil))
}
请求鉴权接口
/API/OAuth/token
,具体参数请参考对应的接口文档。access_key
、x-request-date
和 signature
替换成您自己计算的值。
{
"code": 1,
"message": "OK",
"data": {
"token": "HY5j3NPA1E6_xxxxxxxxxxxxxxxxxxxxxxxxxxta",
"refresh_token": "HY5j3NPA1E6_Nj-gPwJHOfOqPUEhGp9Z9r5H/k/=5bxxxxxxe/OedJObf_CW-iHAXxmrdJaFl/xY/cAZ0CaK-RZNekLDbpbA4_ar7JHUFbph1yAC4yOKVSmW6_eQRSa",
"expire": 1714460111,
"uid": "7733333333",
"username": "test"
}
}
token
值,就是在以后接口请求中必须传递的认证参数. 该token有有效期,请根据自身的业务需求自行获取最新token值.修改于 2024-09-18 08:00:23