# api-security
**Repository Path**: wh1107066/api-security
## Basic Information
- **Project Name**: api-security
- **Description**: api-security
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-25
- **Last Updated**: 2021-06-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## vap-module
统一的模块及版本入口,版本统一管理。以免造成版本混乱及版本不归一情况。
## 开发遵循规范
### 版本号统一管理,不依赖各个模块去管理依赖版本号。如需要升级,做统一升级管理,以免造成版本混乱和不一致
- vap-service
- vap-utils
- vap-common
- vap-syslog
- vap-swagger2-spring-boot-starter
- vap-redis-spring-boot-starter
- vap-prometheus-spring-boot-starter
### 需要引入spring-boot 与 spring-cloud、 aliba-could 整合组件
~~~java
com.vrv.vap
vap-service
~~~
>
### 各服务引用redis操作统一封装,服务直接引用
~~~~
com.vrv.vap
vap-redis-spring-boot-starter
~~~~
### 各服务prometheus 监控统一封装,服务直接引用
~~~~
com.vrv.vap
vap-prometheus-spring-boot-starter
~~~~
### 各服务引用需要swagger接口文档。各服务可以去除swagger依赖
~~~
com.vrv.vap
vap-swagger2-spring-boot-starter
~~~~
使用方式可以自由关闭和打开,使用enable: false进行关闭:
~~~
vap:
swagger:
enabled: true
title: 用户管理中心
description: 项目升级springboot版本
base-package: com.vrv.vap.swagger.controller
version: 3.0
~~~~
### 各服务引用Feign依赖调用文档
feign默认采用jdk原生HttpURLConnection向下游服务发起http请求
源码分析:[feign源码分析](https://blog.csdn.net/yangchao1125/article/details/104492547),现有项目采用OkHttpClient方式
- 1、首先是 Application 类中的 @EnableFeignClients 注解
- 2、加入okhttp的依赖引用
~~~java
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
org.springframework.cloud
spring-cloud-starter-openfeign
io.github.openfeign
feign-okhttp
~~~
- 3、增加application.yml依赖的配置信息
~~~
# 在默认情况下 spring cloud feign在进行各个子服务之间的调用时,http组件使用的是jdk的HttpURLConnection,没有使用线程池。
# 有2种可选的线程池:HttpClient和OKHttp
# 比较推荐OKHttp,请求封装的非常简单易用,性能也很ok。
feign:
okhttp:
enabled: true
client:
config:
default: # 服务名,填写 default 为所有服务,或者指定某服务,例如:annoroad-beta
connectTimeout: 10000 # 连接超时,10秒
readTimeout: 20000 # 读取超时,20秒
httpclient:
enabled: false
max-connections: 1000 # 连接池连接最大闲置数,缺省值是 200
connection-timeout: 3000 # 连接超时,单位为毫秒,缺省值是 3000毫秒(3秒)
time-to-live: 900 # 连接最大闲置时间,单位为秒,缺省值是 900秒(15分钟)
max-connections-per-route: 100
compression:
request:
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
enabled: true
response:
enabled: true
hystrix:
enabled: true
ribbon:
okhttp:
enabled: true
~~~
# vap-starter
基础组件封装starter
- V1.0
增加prometheus的监控的starter引用
增加swagger的开发接口的starter引用
- V1.1
增加redis的starter引用
- V1.2
增加oauth2的认证服务和资源服务,解决垂直越权的接口访问。 支持授权码模式、密码模式进行token的获取
如果存在网络隔离,可以在zuul中进行拦截,支持方法的注解拦截和url的拦截方式,兼容同时使用
如果不存在网络隔离,可以在各个服务模块中进行拦截和权限鉴别。
>- token类型支持3种方式:db、redis、jwt
>- jwt使用的是非对称加密,所以认证服务需要配置为authJwt为私钥加密,其他资源服务修改vap.oauth2.token.store.type=resJwt 通过pubtxt进行自动解析
>- 需要token是redis的方式,默认的vap.oauth2.token.store.type=redis 即可
~~~~
com.vrv.vap
vap-auth-client-spring-boot-starter
~~~~
[具体参考代码api-security](http://192.168.120.101/root/api-demo.git)
- redis返回token类型: api-security 和 api-oauthResource
- jwt返回token类型: api-jwt-server 和 api-jwt-resource