身份验证
当配置了 auth.app_secret
时,所有请求必须包含身份验证头:
必需头信息
X-Timestamp
:当前时间戳(毫秒)X-Signature
:请求的 MD5 签名
签名算法
signature = MD5(METHOD + PATH + TIMESTAMP + BODY + APP_SECRET)
其中:
METHOD
:HTTP 方法(大写,例如 "POST")PATH
:请求路径(例如 "/rpc")TIMESTAMP
:与 X-Timestamp 头相同BODY
:原始请求体APP_SECRET
:配置的密钥
时间戳验证
请求必须在服务器时间的 3
秒内,以防止重放攻击。
示例(Node.js)
javascript
const crypto = require('crypto');
function makeAuthenticatedRequest(body) {
const timestamp = Date.now();
const method = 'POST';
const path = '/rpc';
const appSecret = 'your-secret-key';
const plaintext = method + path + timestamp + JSON.stringify(body) + appSecret;
const signature = crypto.createHash('md5').update(plaintext).digest('hex');
return fetch('http://localhost:8780/rpc', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Timestamp': timestamp.toString(),
'X-Signature': signature
},
body: JSON.stringify(body)
});
}