跳转至

签名方法

对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。

签名流程

  1. 指定请求参数。

在代码中指定请求参数,参数中需要包含公共请求头和接口必备的参数信息。

参数 名称 参数含义
appid 应用秘钥ID 应用秘钥ID
appsecret 应用秘钥 应用秘钥
service 服务的分类 服务的分类,例如 'ocr', 'audio' 等
method 方法名 需要调用的OpenAI的方法名称,例如 'ObjectDetect', 'Text2Voice' 等
tenant 租户ID 云平台对应的租户ID
timestamp 时间戳 发送请求时的Unix时间戳
  1. 拼接参数

构造待签名的请求串,把排序后的参数顺序拼接成如下格式:

var rawstr = appid + appsecret + service + method + tenant + timestamp

  1. 计算签名

签名采用MD5,编码采用UTF-8。使用AccessKeySecret进行加密,参考代码如下:

var sign = CryptoJS.MD5(rawstr).toString();
签名后的结果如下:
bbb8aae57c104cda40c93843ad5e6db8

  1. 发送请求

增加签名结果到请求参数中,发送请求。

"x-appid": "64efdd77-1d51-4660-a853-c9c91b9f1b58"
"x-service": "voice"
"x-method": "Text2Voice"
"x-timestamp": "1675675657"
"x-sign": "625b9e53b7b59578c3d20621e2451fa9"

最终完整的POST请求HTTP为:

curl -XPOST 'http://openai.test.mediacloud.imgo.tv/v1/openai/proxy'
-H "x-method: Text2Voice"
-H "x-service: voice"
-H "x-appid: 64efdd77-1d51-4660-a853-c9c91b9f1b58"
-H "x-sign: 625b9e53b7b59578c3d20621e2451fa9"
-H "x-timestamp: 1675675657"
-H "Content-Type: application/json"
-d '{"content": "测试文字"}'

NodeJS 示例

简单参数示例 完整的 NodeJS 签名代码示例,以文本语音合成为例。