软件测试
接口测试心得--签名处理(Python)
一、背景
最近负责的项目接口签名规则做了调整,第一次接触“2次认证“的方式,正好有时间,记录一下。
测试的服务A有一部分接口需要给第三方调用,这样需要对第三方有个认证,认证是由一个公共服务(API鉴权服务)来完成的。
基本框架:
调用时序图:
第三方调用服务A的认证流程:
1、先访问API鉴权服务来获取apiToken(即拿到访问服务A的认证)
2、再由获取到的apiToken参与服务A的签名认证规则
这样就相当于在第三方和服务A直接增加了2次认证,安全性有了更好的保障。
流程1(获取apiToken)的签名规则如下:
1、将所有请求参数的值放入List中,注意:计算sign时所有参数不应进行URLEncode;2、将格式化后的参数以字典序升序排列,拼接在一起,注意字典序中大写字母在前,空值(null)使用空字符串代替;3、将B形成字符串获取SHA1摘要,形成一个40位的十六进制(字母大写)字符串,即为本次请求signature(签名)的值;
流程2(获取服务A的签名)的规则如下:
1、参与签名的参数为:apiToken+appKey+appSecret+timestamp+body(提取bo