jdmm / signature
提供加密签名算法
1.0.10.x-dev
2021-06-03 00:32 UTC
This package is auto-updated.
Last update: 2025-03-01 00:47:56 UTC
README
参数说明
- $date 请求时间。示例:Wed, 05 Sep. 2012 23:00:00 GMT ,不强制要求时间格式,只是当做字符串处理
- $path 请求路径。示例:/resource/audit
- $query query参数。示例:id=110&name=testName
- $method 请求方式。示例:POST
- $body 主体内容。json格式
- $SecretKey 用户密钥。公共服务数据库(jd_common)的jd_api_auth表查询出请求用户的密钥access_key_secret,公共服务提供了RPC查询接口searchSecret()。
- $signature 用户提供的签名
##使用说明 ###中间件内调用 中间件
加密说明
Header头里要传递的数据
名称 | 类型 | 说明 |
---|---|---|
Authorization | 字符串 | 用于验证请求合法性的认证信息。 |
Date | 字符串 | HTTP 1.1协议中规定的GMT时间,例如:Wed, 05 Sep. 2012 23:00:00 GMT |
组织参与签名计算的字符串
Authorization = GroupName + ":" + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Date + "\n"
+ Url))
当Body
部分为空时Signature的签名算法
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ "\n"
+ Date + "\n"
+ Url))
GroupName
由平台分配
GroupName | 描述 |
---|---|
DSP | dsp业务 |
AccessKeyId
调用方的唯一身份标识,由平台分配
AccessKeySecret
密钥,由平台分配
VERB
表示HTTP请求的Method,主要有PUT、GET、POST、HEAD、DELETE等,统一为全大写格式
Content-MD5
Content-MD5 是指 Body 的 MD5 值,只有当 Body 非 Form 表单时才计算 MD5,并转换成小写形式,当body部分为空时,以"\n"代替,计算方式为:
java:
String content-MD5 = MD5(bodyStream.getbytes("UTF-8")).toLowerCase();
php:
$contentMd5 = strtolower(md5(file_get_contents('php://input')));
swoft:
$data = $request->raw();
Url
Url 指 Path + Query 中 Form 参数,组织方法:对 Query 参数按照字典对 Key 进行排序后按照如下方法拼接,如果 Query 参数为空,则 Url = Path,不需要添加 ?,如果某个参数的 Value 为空只保留 Key 参与签名,等号不需要再加入签名。
String url =
Path +
"?" +
Key1 + "=" + Value1 +
"&" + Key2 + "=" + Value2 +
...
"&" + KeyN + "=" + ValueN