mirror of
https://gitee.com/incloudcode/yexuejc-springboot.git
synced 2025-09-28 02:43:21 +08:00
整理集成文档,未发布版本
This commit is contained in:
13
doc/MENU.md
Normal file
13
doc/MENU.md
Normal 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
34
doc/MNS.md
Normal 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
36
doc/OSS.md
Normal 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)
|
121
doc/PARAMS_RSA_DECRYPT_ENCRYPT.md
Normal file
121
doc/PARAMS_RSA_DECRYPT_ENCRYPT.md
Normal 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
30
doc/REDIS.md
Normal 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
22
doc/RSA.md
Normal 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
|
Reference in New Issue
Block a user