前提:1.目前支持form-data、x-www-form-urlencoded、json、raw的body格式,也支持地址栏拼接query参数。2.请求以实际发出的数据为准,如页面配置的密码为123456,实际请求对123456做了md5加密,则签名数据以md5加密后的内容为准。3.未实现对文件的签名功能
签名生成的通用步骤如下:
一、根据BODY的数据格式(去空格和回车),拼接在签名数据的最前面,得到结果串1。如果不存在则忽略此步骤
- 得到结果串 1:格式为JSON拼接json=对象数据的JSON字符串
json={"routeId":"11","devEnv":"lb://ocp-manager-service","prodEnv":"172.16.4.103:29001","path":"/111/111","method":1}
- 得到结果串 1:格式为form-data拼接form-data=表单数据,中间加上&分隔符
form-data=routeId=11&devEnv=lb://ocp-manager-service&prodEnv=172.16.4.103:29001&path=/111/111&method=1
!
- 得到结果串 1:格式为x-www-form-urlencoded拼接form-urlencoded=表单数据,中间加上&分隔符(中文和特殊符号会进行urlencode)
form-urlencoded=routeId=11&devEnv=lb%3A%2F%2Focp-manager-service&prodEnv=172.16.4.103%3A29001&path=%2F111%2F111&method=1
- 得到结果串 1:格式为raw拼接text=加上body文本
text={"routeId":"11","devEnv":"lb://ocp-manager-service","method":1,"prodEnv":"172.16.4.103:29001","path":"/111/111"}
二、对请求行(地址栏)参数进行排序并拼接在结果串1的后面。
(1)对获取的所有请求行(地址栏)参数进行参数名ASCII码从小到大排序(字典序)
(2)如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推
(3)将排序后的参数与其对应,组成参数=参数值格式,并把参数串用&连接起来
(4)参数名区分大小写,在结果串1的后面拼接上排好序的数据,中间需要加上&分隔符
(5)若有中文和特殊字符需要进行 URLEnocde 编码
- 得到结果串 2:json 格式
json={"routeId":"11","devEnv":"lb://ocp-manager-service","method":1,"prodEnv":"172.16.4.103:29001","path":"/111/111"}&checkFlag=1&limit=1&page=1
- 得到结果串 2:form-data 格式
form-data=routeId=11&devEnv=lb://ocp-manager-service&prodEnv=172.16.4.103:29001&path=/111/111&method=1&checkFlag=1&limit=1&page=1
- 得到结果串 2:x-www-form-urlencoded 格式(中文和特殊符号会进行urlencode)
form-urlencoded=routeId=11&devEnv=lb%3A%2F%2Focp-manager-service&prodEnv=172.16.4.103%3A29001&path=%2F111%2F111&method=1&checkFlag=1&limit=1&page=1
- 得到结果串 2:raw 格式
text={"routeId":"11","devEnv":"lb://ocp-manager-service","method":1,"prodEnv":"172.16.4.103:29001","path":"/111/111"}&checkFlag=1&limit=1&page=1
三、在结果串2的后面按固定顺序拼接上appid、timesstamp、nonce这三个参数的具体值,中间加上&分隔符,timesstamp为时间戳,nonce推荐32位UUID
请求头参数 | 值 |
---|---|
Ocp-Timestamp | 1609210702227 |
Ocp-Nonce | HzW4iRHXBAsTXsNXyFi64s0xiEMjSR6s |
Ocp-AppId | 9dfb3bf5097d4f7fbec2003d7163c111 |
- 得到结果串 3:json 格式
json={"routeId":"11","devEnv":"lb://ocp-manager-service","method":1,"prodEnv":"172.16.4.103:29001","path":"/111/111"}&checkFlag=1&limit=1&page=1&9dfb3bf5097d4f7fbec2003d7163c111&1609210702227&HzW4iRHXBAsTXsNXyFi64s0xiEMjSR6s
- form-data 格式
form-data=routeId=11&devEnv=lb://ocp-manager-service&prodEnv=172.16.4.103:29001&path=/111/111&method=1&checkFlag=1&limit=1&page=1&9dfb3bf5097d4f7fbec2003d7163c111&1609210702227&HzW4iRHXBAsTXsNXyFi64s0xiEMjSR6s
- x-www-form-urlencoded 格式(中文和特殊符号会进行urlencode)
form-urlencoded=routeId=11&devEnv=lb%3A%2F%2Focp-manager-service&prodEnv=172.16.4.103%3A29001&path=%2F111%2F111&method=1&checkFlag=1&limit=1&page=1&9dfb3bf5097d4f7fbec2003d7163c111&1609210702227&HzW4iRHXBAsTXsNXyFi64s0xiEMjSR6s
- raw 格式
text={"routeId":"11","devEnv":"lb://ocp-manager-service","method":1,"prodEnv":"172.16.4.103:29001","path":"/111/111"}&checkFlag=1&limit=1&page=1&9dfb3bf5097d4f7fbec2003d7163c111&1609210702227&HzW4iRHXBAsTXsNXyFi64s0xiEMjSR6s