# 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