签名方法
对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。
签名流程¶
- 指定请求参数。
在代码中指定请求参数,参数中需要包含公共请求头和接口必备的参数信息。
参数 | 名称 | 参数含义 |
---|---|---|
appid | 应用秘钥ID | 应用秘钥ID |
appsecret | 应用秘钥 | 应用秘钥 |
service | 服务的分类 | 服务的分类,例如 'ocr', 'audio' 等 |
method | 方法名 | 需要调用的OpenAI的方法名称,例如 'ObjectDetect', 'Text2Voice' 等 |
tenant | 租户ID | 云平台对应的租户ID |
timestamp | 时间戳 | 发送请求时的Unix时间戳 |
- 拼接参数
构造待签名的请求串,把排序后的参数顺序拼接成如下格式:
var rawstr = appid + appsecret + service + method + tenant + timestamp
- 计算签名
签名采用MD5,编码采用UTF-8。使用AccessKeySecret进行加密,参考代码如下:
var sign = CryptoJS.MD5(rawstr).toString();
bbb8aae57c104cda40c93843ad5e6db8
- 发送请求
增加签名结果到请求参数中,发送请求。
"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 签名代码示例,以文本语音合成为例。