# apiPermission
**Repository Path**: sunlei99/apiPermission
## Basic Information
- **Project Name**: apiPermission
- **Description**: URL验签工具,防止内容在传输过程中被篡改和地址泄漏后发生的恶意性攻击,技术上通过filter对关键参数进行容器外校验,屏蔽无效请求的继续渗透。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2019-04-03
- **Last Updated**: 2021-10-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ApiPermission 简介
URL验签工具,防止内容在传输过程中被篡改和地址泄漏后发生的恶意性攻击,技术上通过filter对关键参数进行容器外校验,屏蔽无效请求的继续渗透。
校验参数通过header传输,内容参数通过body以json数据格式传输。
### 1、默认必须header参数:
| header参数说明: |
| 参数 | 说明 | 是否必须 | 备注 |
| appid | 使用者标示 | 必须 | 常量值:项目初,使用者从提供服务方获取。 |
| Content-Type | 数据格式 | 必须 | 目前仅支持‘application/json’格式数据 |
| timestamp | 时间戳 | 非必须 | 默认5分钟,超出则请求超时。 |
| sign | 参数签名 | 必须 | 签名规则: 1、接口参数按key首字母升序排列; 2、md5采取32位小写两次加密; 3、signKey 常量值:项目初,使用者从提供服务方获取。; 4、加密规则md5[md5(key1=value1&key2=value2&signKey)+nonce]。备注只处理第一层如遇到数组或嵌套{} key与value不参与运算。 |
| nonce | 随机数 | 必须 | 必须 |
### 2、状态码
SUCCESS("200", "success"),
UNKNOW_ERROR("50001","未知错误"),
PARAMETER_ERROR("40001","参数错误"),
TOKEN_EXPIRE("40002","认证过期"),
REQUEST_TIMEOUT("40003","请求超时"),
SIGN_ERROR("40004","sign签名错误"),
REPEAT_SUBMIT("40005","请不要频繁操作"),
CONTENT_TYPE("40006","Content-Type仅支持application/json格式数据"),
DATA_FORMAT("40007","data数据格式不支持"),
TIMESTAMP_TIMEOUT("40008","TIMESTAMP超时"),
INPUT_ERROR("40009","录入错误"),
VALIDATE_ERROR("40010","数据验证错误"),
NODATE_UPDATE("30001","没有数据更新");
### 3、项目整合方法
#### springBoot工程
/**
* API sign验签
*/
@Configuration
public class ApiPermissionConfig {
@Bean("apiAuthFilter")
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new ApiAuthFilter());
registration.addUrlPatterns("/api/*");
registration.addInitParameter("signKey", "***2019");
registration.setName("apiAuthFilter");
registration.setOrder(1);
return registration;
}
}
初始化参数:
excludedPaths 可以定义不做校验的url,多个值可用“,”分隔;
signKey 加密常量
authHeaderParams 可通过常量池自定义过滤参数范围,多个值可用“,”分隔,不定义则执行默认过滤范围。