搜索
首页 / 开源项目 /CastleFortress 开放SDK

CastleFortress 开放SDK

2020-03-10

开源地址:

https://gitee.com/hcwdc/Fortress-OpenApi-SDK

项目说明

本项目为castle-fortress-basic的统一对外开放API接口调用SDK。指在方便开发人员直接将本程序嵌入内部进行简单修改即可使用。

所有的接入必须需要生成SecretId和SecretKey对外开放的接口访问路径统一为:/openapi/***

简要描述

请求签名

对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。

SecretId和SecretKey是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。

秘钥对生成签名的规则

  1. 构造签名参数集合,除接口所需所有参数外,必传C-Date以及C-Secret(C-Date为header里的时间,C-Secret为用户的SecretId)
  2. 将所有参数集合去除参数值为null和空的数据
  3. 将所有参数key值按照ASCII码升序排列
  4. 拼接签名字符串
  5. 签名字符串进行HmacSHA1摘要 /Base64加密

1、构造签名参数集合



除接口所需所有参数外,必传C-Date以及C-Secret


java.util.Map<String,Object> map=new java.util.HashMap<>();
	map.put("cDate","PP********");
	map.put("cSecretId","12QWgV-******-******-5odKA3");
	//请求接口所需的其他参数项
	map.put("……","……");……
	

2、 将所有参数集合去除参数值为null和空的数据


//构造签名参数集合
Map<String,Object> signParamMap=new HashMap<>();
	if(map!=null && !map.isEmpty()){
		for(String key:map.keySet()){
		// 筛选 非null且非空的参数参与签名
			if(map.get(key)!=null && Strings.isNotEmpty(map.get(key).toString())){
				signParamMap.put(key,map.get(key));
			}
	}
}

3、 将所有参数key值按照ASCII码升序排列


TreeMap<String,Object> treeMap=new TreeMap();
	for(String key:signParamMap.keySet()){
		treeMap.put(key,signParamMap.get(key));
	}
	

4、拼接生成待签名字符串


//拼接 将排序后的参数与其值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接来,此时生成的字符串为待签名字符串 最后一个&符要去掉
StringBuilder sb=new StringBuilder();
	for(String key:treeMap.keySet()){
		sb.append(key+"="+treeMap.get(key)+"&");
	}
	sb=new StringBuilder(sb.toString().substring(0,sb.lastIndexOf("&")));
	String signString = sb.toString();
	

5、签名字符串进行HmacSHA1摘要 /Base64加密


//HmacSHA1摘要
byte[] bytes=signString.getBytes(StandardCharsets.UTF_8);
HMac mac = new HMac(HmacAlgorithm.HmacSHA1, 
//此处的secretKey为secretid对应的key
secretKey.getBytes(StandardCharsets.UTF_8));
String macHex1 = mac.digestHex(bytes);
//Base64加密
String sign = Base64.encode(macHex1);
return sign;

最后的sign为生成的签名


相关新闻动态
联系华创数字云,定制您的专属方案 专家咨询
带您了解企业级开发框架“CastleFortress”点击查看
电话咨询

0536-8184803 (9:00-18:00)

留言咨询

快速安排专业人员与您联系

联系我们

提交您的需求,我们将尽快与您联系

点击扫码登录
用户登录

登陆后即可下载解决方案和观看完整视频

新用户?请注册>
扫码注册
打开微信扫一扫
关注公众号进行注册
已有账号?请登录>
点击账号登录
手机扫码登录
打开微信扫一扫
使用二维码登录,更快捷