Skip to content

Commit 67c23db

Browse files
committed
modify
1 parent 86d114d commit 67c23db

File tree

2 files changed

+96
-5
lines changed

2 files changed

+96
-5
lines changed

README.md

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,93 @@
1-
# au-api
2-
api token,parameter signature, encryption and decryption.
1+
# Au Api
2+
3+
[![Maven Central](https://img.shields.io/maven-central/v/com.lazycece.au/au-api)](https://search.maven.org/search?q=au-api)
4+
[![License](https://img.shields.io/badge/license-Apache--2.0-green)](https://www.apache.org/licenses/LICENSE-2.0.html)
5+
[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/lazycece/au-api/releases)
6+
7+
`Au api`是一个基于[Au框架](https://github.com/lazycece/au)实现的api安全框架,支持token认证、防拦截、参数签名以及数据加密等,适用于任何基于`servlet`的web项目。
8+
9+
## 如何使用?
10+
11+
> `spring boot`项目请移步[`au-api-spring-boot`](https://github.com/lazycece/au-api-spring-boot)
12+
13+
### Maven Dependency
14+
15+
```xml
16+
<dependency>
17+
<groupId>com.lazycece.au</groupId>
18+
<artifactId>au-api</artifactId>
19+
<version>${au.core.version}</version>
20+
</dependency>
21+
```
22+
### `Au api`集成
23+
24+
请直接查看使用样例 [au-api-example](https://github.com/lazycece/au-api/tree/master/au-api-example)
25+
26+
## 框架说明
27+
28+
### 请求参数
29+
30+
框架提供公共参数如下:
31+
32+
- `time`: 请求发起时间戳
33+
- `salt`: 盐值
34+
- `sign`: 参数签名值
35+
- `data`: 具体接口参数的json字符串进行加密后的字符串
36+
37+
使用者可自行添加所需要的公共参数,如设备号`deviceId`、 版本号`version`、版本code等,只需继承`ApiParams`并告知框架自定义的参数类即可。
38+
39+
对于`Content-Type``POST`请求可支持`application/json``application/x-www-form-urlencoded`;而如果需要采用`multipart/form-data`协议上传文件时,文件参数可与公共参数同级。
40+
41+
### 返回参数
42+
43+
对于接口返回参数,框架只负责加密,而将决定权交给了使用者,方便更友好的集成使用。
44+
45+
### 用户鉴权
46+
47+
框架在接口调用时会通过校验`token`进行用户鉴权,用于判断用户是否登陆、会话是否过期以及是否是非法调用等等,所以接口调用均需在请求`Headers`中附上用户的`token`
48+
在会话控制中,`token`会默认在每次请求完成后刷新,当然`token`也会失效,默认其有效时间是30分钟。
49+
50+
使用者可自行更改`token`相关信息,如header名、有效时长以及是否在每次请求后进行刷新等。
51+
52+
### 防拦截
53+
54+
每次请求会对`time`参数进行校验,防止被请求被拦截篡改,从发起请求到收到请求之间时间间隔默认不超过3分钟。
55+
56+
### 签名验证
57+
58+
接口交互时会进行签名验证,签名`sign`动态生成方式伪代码如下:
59+
60+
```
61+
str = param1=param1_value&param2=param2_value&param3=param3_value&key=secrt_key
62+
sign = md5(str).toUpperCase()
63+
```
64+
65+
伪代码关键说明如下:
66+
67+
- `secrt_key`为密钥,需要服务端提供;
68+
- 签名串`str`中的参数`param`需要按参数名升序排列;
69+
- 参数值为空的参数不参与签名;
70+
71+
### 数据加解密
72+
73+
接口交互中,请求和返回数据中`data`参数会进行加解密操作,可支持`AES-ECB``DES3-ECB`两种算法。
74+
75+
加密伪代码如下:
76+
77+
```
78+
data = base64_encode(encrypt( md5(salt + secrt_key), data_json))
79+
```
80+
81+
解密伪代码如下:
82+
83+
```
84+
json_data = decrypt(md5(salt + secrt_key), base64_decode(data))
85+
```
86+
87+
## Au Api 协议模板
88+
89+
提供基于[au-api-example](https://github.com/lazycece/au-api/tree/master/au-api-example)[接口协议模板](au-api-template.md).
90+
91+
## License
92+
93+
[Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html)

au-api-template.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,18 @@ sign = md5(str).toUpperCase()
6565

6666
### 1.5 数据加解密
6767

68-
接口交互中,请求和返回数据中`data`参数会进行加解密操作。
68+
接口交互中,请求和返回数据中`data`参数会进行加解密操作,采用`DES3-ECB`对称加密算法
6969

7070
加密伪代码如下:
7171

7272
```
73-
data = base64_encode(encrypt( md5(salt + secrt_key), data_json))
73+
data = base64_encode(des3_ecb_encode( md5(salt + secrt_key), data_json))
7474
```
7575

7676
解密伪代码如下:
7777

7878
```
79-
json_data = decrypt(md5(salt + secrt_key), base64_decode(data))
79+
json_data = des3_ecb_decode(md5(salt + secrt_key), base64_decode(data))
8080
```
8181

8282
## 2 接口定义

0 commit comments

Comments
 (0)