1
0
mirror of https://gitee.com/incloudcode/yexuejc-springboot.git synced 2025-09-28 02:43:21 +08:00

整理集成文档,未发布版本

This commit is contained in:
2018-11-01 15:12:40 +08:00
parent 3059d4c8f2
commit e8117a7dea
23 changed files with 1112 additions and 392 deletions

13
doc/MENU.md Normal file
View File

@@ -0,0 +1,13 @@
功能目录
------------------------
### 第三方集成
#
* [redis 集成](REDIS.md)
* [Aliyun MNS 消息队列](MNS.md)
* [Aliyun OSS 对象存储](OSS.md)
### 内部集成
#
* [1.0.6新增 针对API请求安全解决方案](PARAMS_RSA_DECRYPT_ENCRYPT.md)<br/>
* [1.0.6新增 加密功能](PARAMS_RSA_DECRYPT_ENCRYPT.md)

34
doc/MNS.md Normal file
View File

@@ -0,0 +1,34 @@
aliyun MNS 消息队列 使用指南
-------------
* 本项目依赖不向下传递
* 开通请参考[阿里云-消息服务-MNS](https://help.aliyun.com/product/27412.html?spm=5176.7944397.207973.oss4.4d1ab2418oQPP0)
> 引入依赖 pom.xml
```mxml
<dependencies>
<!-- 阿里云基础SDK -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
<!-- 阿里云消息服务MNS相关SDK -->
<dependency>
<groupId>com.aliyun.mns</groupId>
<artifactId>aliyun-sdk-mns</artifactId>
<classifier>jar-with-dependencies</classifier>
</dependency>
</dependencies>
```
> 配置
```
#mns
yexuejc.alibaba.mns.access-key-id=阿里MNS提供的AccessKey
yexuejc.alibaba.mns.access-key-secret=阿里MNS提供的的SecretKey
yexuejc.alibaba.mns.endpoint=MNS接入endpoint公网私网VPC各不相同需要分环境配置
yexuejc.alibaba.mns.queue-name-prefix=队列名称前缀
```
> 使用example
参考[MnsTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/MnsTest.java)

36
doc/OSS.md Normal file
View File

@@ -0,0 +1,36 @@
aliyun OSS 对象存储 使用指南
-------------
* 本项目依赖不向下传递
* 开通请参考[阿里云对象存储-OSS](https://help.aliyun.com/document_detail/32008.html?spm=5176.87240.400427.45.1dd74614DiKpxR)
_本工程暂提供上传功能_
> 引入依赖 pom.xml
```mxml
<dependencies>
<!-- 阿里云基础SDK -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
<!-- 阿里云OSS相关SDK -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
</dependencies>
```
> 配置
```
#OSS
yexuejc.alibaba.oss.endpoint=阿里OSS提供的endpoint
yexuejc.alibaba.oss.access-key-secret=阿里OSS提供的SecretKey
yexuejc.alibaba.oss.access-key-id=阿里OSS提供的AccessKey
yexuejc.alibaba.oss.bucket=阿里OSS提供的bucket
```
> 使用example
参考[OssTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/OssTest.java)

View File

@@ -0,0 +1,121 @@
# 加密解密功能介绍
#### [公、私钥生成](RSA.md)
#### 客户端解密服务器端加密出参data
>API返回值的data部分会用私钥加密<br/>
>1.先使用公钥解密得到解密字符串 <br/>
>2.1返回data为Map类型:先转成Map然后ASCII码排序得到->result1=xxxxx&result2=xxxxx再MD5的到sign <br/>
>2.2返回data为List类型:先转成List然后JSON化再MD5的到sign <br/>
>2.3返回data为字符串或基础类型:先转成String再MD5的到sign <br/>
>客户端使用公钥解密
正常api返回值
```json
{
"code": "S",
"data":"xxxxx",
"msg": [
"操作成功"
]
}
```
加密后api返回值
```json
{
"code": "S",
"data":"LZ6ylSuKj36Pd5_TGfHmmJUifKQq_BLLD_CRyw17Z6y9jfcjpK.....",
"sign":"dee2f5af75b50f99b16726784230afeb",
"msg": [
"请求成功"
]
}
```
解析代码
```
//map
String mapData = "cEPfMp7-rim76XFdbNDSIzDRXyHySpz0VOZP6HC8U-JPl-ZxNZKp6ethEQWWITcuUPzIhp4fHiGKNsHA7F6OxCxibpMLj5-ZsgJJvcczw8Liens5kYgciRF1UziR3LFy6vybN9H1CJnqXaddbl3t_41P-_1l5Ev7YYa8woWp7ulaRPeTCDjohEpmx2Vi6aPSrm3hjjmitkD9gb0O6vFDNnclyNhFepKV3oh93tNv50sEQQ_QSBUXSHUtCnhTiBX8VsRX3h58F2tie7bG8VSk-6KFuXI07OiqFZSNpcwDOuq-GfMlEfPL3pX-gYhoOORPNClRlQHwyfHXBJly3gRtNVpVksHWQjr1xutWgYfwRjQPHBHNZwfx4E0XoCTuz9qH1CzFmmz68i63GzCM286zJ-J26MkiTDO1zH4jhglo38tnzz9HLeDcbbCuJg1jzkvpFiWamM-6odWhtCg65BS1tJJVWg023kWygZMu5Ebrm5WBbbatN87_K5zn211tFpKwRq2oVjO_AfJRY90WlQGEIHnzZNz_cf8mAjlmilHDuNdjYlj3axTUqLfgLDVaIkasREnjMI7oe8oAtG2ju2aq-xSAQZ_U-7-rsyBpoy0jnwRmlyUxhXgIX0zrfBQNXEjzPtg-iJ14R5qz1iOAJL7NtQQeuYngGTj6msDlKGEd_MQTLAFDbpiVPwWX00jLT1Ll3_zhivpPCUAmC8Yz58khkqrqi4FdIxJTDkxd0PFOBH8DYicF7ls4UdOHT24mAKDwUF_TfZ32oiiKSzCD9MJB8GEXjzx7tDFok-HsdOjI6ZnSUJCOTj3wne2E6_a8Gq2_vp5CWyW12wthJbH79aa7JVfy5cx-cZmNid7oCe54KYclz1tdUgLPCQ1ajsEevbRJ_NBkTmY2wAmUpHODeocDaYt_2AwAU2DLiv2uZuaVszNSUy593Zrzxq5AaY-oWbEeD24SyEWJObJtz5knYzr4NxjZShcjx9ezwiwkRZMtLZpA_cCPFAK1nOrN8zHCOZquS17CCSLDySLvGbxNqYeBa_lGSq8cQuQo8yybd1WkuLKUjUiJecmH2XcZNTPCtdRe0eLlRtk5928AQGsQugwSig";
String sign = StrUtil.toMD5(
StrUtil.getSignContent(
JsonUtil.json2Obj(mapData, Map.class)
)
)
//list
String listData = "Sf_FO8YC9EUNTeM0n9EVuDzwvLz3DcxOuG4-5UZ9486lLHAx7IOuAhPgVHpQGsQiqJ7Y3fTaWFr6rRFPL12rVg";
String sign = StrUtil.toMD5(
JsonUtil.obj2Json(
JsonUtil.json2Obj(listData, List.class)
)
)
//其他
String strData = "K9Zyg82WDvIApFmXTxPwjQw_VA041jfBcxMIP6jpMM6xWe1XajGf3__7DqSLrS9MwCra9cYkidcjVJAKZn9cmQ";
strData = RSA.publicDecrypt(strData, RSA.getPublicKey(properties.getPublicKey()));
String sign =StrUtil.toMD5(JsonUtil.json2Obj(strData, String.class);
```
#### 客户端加密 (服务器端解密入参data)
>1. 客户端先使用公钥加密,参数为Map类型 <br/>
> 1.1 参数先ASCII码排序得到新的参数->result1=xxxxx&result2=xxxxx再MD5的到sign <br/>
> 1.2 加密新的参数得到data也可以对原map JSON化后加密
>
>2. API接收到json参数解析为ParamsPO <br/>
>ParamsPO.data部分进行解密操作解密后得到原始参数(result1=xxxxx&result2=xxxxx)做MD5校验
原始参数
```
Map map = new HashMap();
map.put("page", 5);
map.put("size", 16);
map.put("content", "定制榻榻米垫竹编客厅茶几垫卧室地毯竹地毯飘窗垫日式榻榻米地毯");
//对参数ASCII码排序
String data = StrUtil.getSignContent(map);
//封装请求参数
ParamsPO params = new ParamsPO();
params.setSign(StrUtil.toMD5(datas));
params.setData(RSA.publicEncrypt(datas, RSA.getPublicKey(properties.getPublicKey())));
```
加密后的请求参数
```json
{
"data":"pe0V05nr5bfUp7c/JL1b/b6qJHipA5Qx8vM8BRryu3k=",
"sign":"dee2f5af75b50f99b16726784230afeb"
}
```
### 配置
1. 服务器配置私钥
```
#配置密钥方式
yexuejc.http.encrypt.private-key=私钥
#配置证书方式:方式二选一,两者都配置会选择配置密钥方式
yexuejc.http.encrypt.private-key-path=/lgfishing.keystore
yexuejc.http.encrypt.private-alias=lgfishing
yexuejc.http.encrypt.private-pwd=lgfishing2018
yexuejc.http.encrypt.encrypt=true //加密默认false
yexuejc.http.encrypt.decrypt=true //解密默认false
```
2.客户端请求
```
request:POST
header:
X-User-Agent:token
Content-Type:application/json
body:
{
"data":"pe0V05nr5bfUp7c/JL1b/b6qJHipA5Qx8vM8BRryu3k=",
"sign":"123456789"
}
```

30
doc/REDIS.md Normal file
View File

@@ -0,0 +1,30 @@
redis 使用指南
-------------
* 本项目依赖不向下传递
> 引入依赖 pom.xml
```mxml
<dependencies>
<!-- 使用Redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies>
```
> 配置
```
#reids
spring.redis.host=你的reids地址
spring.redis.password=密码
spring.redis.port=端口
```
> 使用example
参考[RedisTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/RedisTest.java)

22
doc/RSA.md Normal file
View File

@@ -0,0 +1,22 @@
#生成私钥
keytool -genkey -alias lgfishing -keyalg RSA -keystore lgfishing2.keystore -keysize 1024 -validity 36500
```
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: heikengdiaoyu.com
您的组织单位名称是什么?
[Unknown]: 深圳金大米网络科技有限公司-老G钓鱼
您的组织名称是什么?
[Unknown]: 成都极致思维网络科技有限公司-老G钓鱼
您所在的城市或区域名称是什么?
[Unknown]: 成都
您所在的省/市/自治区名称是什么?
[Unknown]: 四川
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=heikengdiaoyu.com, OU=深圳金大米网络科技有限公司-老G钓鱼, O=成都极致思维网络科技有限公司-老G钓鱼, L=成都, ST=四川, C=CN是否正确?
[否]: 是
```
#生成公钥
keytool -export -alias lgfishing -keystore lgfishing2.keystore -storepass lgfishing2018 -rfc -file lgfishing2.cer