swagger配置使用及安全方案

1.swagger的依赖

pom依赖,这是针对swagger2的

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

pom依赖,这是针对swagger3的

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.2.31</version>
</dependency>

2.swagger配置

swagger2配置需要添加两个注解,包括@EnableSwagger2和@Configuration

 此处需要留意,如果项目是基于springmvc,需要手动添加配置注册swagger,帮助mvc找到swagger-ui.html对应的文件

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

 swagger3配置需要添加一个配置类

上图中涉及了三个子对象,起到的作用不同:

components主要是用于配置用户的token认证校验 Components对象里面包含Map<String, SecurityScheme>结构的securitySchemes对象

public OpenAPI components(Components components) {
    this.components = components;
    return this;
}

// 1.1.securitySchemes对象包含key和SecurityScheme对象,SecurityScheme对象里面包含type,name,in,description等参数字段
public Components addSecuritySchemes(String key, SecurityScheme securitySchemesItem) {
    if (this.securitySchemes == null) {
       this.securitySchemes = new LinkedHashMap();
    }
    this.securitySchemes.put(key, securitySchemesItem);
    return this;
}

 info主要用于swagger页面的标题和版本确认,Info对象包含title,version和description字段

public OpenAPI info(Info info) {
    this.info = info;
    return this;
}

externalDocs用于标题下面的链接,ExternalDocumentation内部又包含description和url字段

public OpenAPI externalDocs(ExternalDocumentation externalDocs) {
    this.externalDocs = externalDocs;
    return this;
}

3.启动类配置,无论是swagger2还是swagger3,都需要配置

如果项目不存在springMVC配置,仍然报404,肯定是接口地址有问题,例如本项目中,路由地址添加了context-path,如果添加了也要用contact拼接上去

ps:此处要特别注意,如果启动成功,但swagger报404,肯定是接口地址有问题,例如本项目中,路由地址添加了context-path

4.安全问题---解决方案

项目在进行安全扫描时,swagger是很容易收到安全攻击的,因此需要设计一套针对与swagger的安全访问权限,如test表示test环境可以被访问,其他环境不可以被访问

如上图所示,@Profile和@EnableSwaggerBootstrapUI都能够配置swagger访问权限。二者单一使用即可,如需组合使用,需要注意注解的顺序

二者比较而言,@Profile环境权限配置权限较大,故需要注意注解的顺序

@Profile({"test"})//环境权限配置,该权限较大,无论如何都会优先执行第一个权限
@EnableSwaggerBootstrapUI

当使用@EnableSwaggerBootstrapUI注解时,需要在yml文件中配置swagger的访问账号密码

swagger:
#  不可设置为true,否则将屏蔽所有资源
  production: false
  basic:
    enable: true
    username: root
    password: 123456

如上图所示采用组合方式的权限访问,首先确认环境是否正确,再确认密码正确,全部正确才可以进入访问。如果环境校验不通过,则不会出现输入密码的场景

chatty 陈
关注 关注
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【微服务】springboot整合swagger多种模式使用详解
congge_study的博客
06-04 5675
springboot整合swagger多种模式使用详解
Swagger简单使用
qq_40833874的博客
03-22 7800
文章目录SwaggerSwagger 简介SwaggerSpringBoot集成Swagger配置SwaggerSwagger配置扫描接口注解介绍总结 Swagger 目标: 了解Swagger的作用和概念 了解前后端分离 在SpringBoot中集成Swagger Swagger 简介 前后端分离 Vue + SpringBoot 后端时代:前端只用管理静态页面;html==>后端。模板引擎 JSP=>后端是主力 前后端分离时代: 后端:后端控制层,服务层,数据访问层 【后端团队】
swagger安全控制
qq_41358110的博客
01-07 668
项目场景: 当我们使用swagger,进行文档管理的时候,担心文档暴露。 1、环境配置: 如以上配置,则只有在dev以及test环境有效,在生产环境不可访问。 2.账户权限配置 配置yml文件 注意:swagger.production不可设置为true,否则将屏蔽所有资源 在swaggerConfig中添加注解 @EnableSwaggerBootstrapUI 此时密码账号不对,不可登录。 ...
Swagger配置
haoyun的博客
09-22 467
Swagger简介 前后端分离 后端:后端控制层、服务层、数据访问层 前端:前端控制层、视图层 前端伪造数据,json,不需要数据也能跑起来 前后端如何交互===》通过API沟通 前后端相对独立,送耦合 前后端甚至可能部署在不同的服务器上 产生一个问题 前后端集成联调,前后端无法做到即时协商,前端加了字段后端需要更改很多东西 解决方案 指定Schema计划制定的提纲,实时更新最新的API,降低集成风险 早些年使用Word文档 前后端分离 前端要使用数据时要确保数据适合前端界面,如果后端传递
Swagger2的依赖导入、配置、以及常用注解
最新发布
CHN_NeverRegret的博客
07-27 398
Swagger配置和常用注解
swagger配置使用及自定义安全方案securitySchemes
weixin_61607152的博客
01-24 1550
swagger配置使用及自定义安全方案securitySchemes
swagger添加权限验证,保证API(接口)安全
11-26 7780
当我们使用swagger,进行接口测试,怕接口不安全,担心暴露。可采用两种方式 1.环境权限配置swagger文档配置只在测试环境可访问,生产环境不可访问。 @Profile({"dev","test"}) 如以上配置,则只有在dev以及test环境有效,在生产环境不可访问。 2.账户权限配置 在1.9.0版本时,针对Swagger的资源接口,SwaggerBootstrapUi提供了简单的Basic认证功能。 如果是springboot项目可在yml文件配置 2.1:配置yml文件 swagge
Swagger接口安全测试
Fly_鹏程万里
02-22 1383
Swagger是一种用于描述、构建和使用RESTful API的开源框架,它提供了一套工具和规范,帮助开发者设计、文档化和测试API以及生成客户端代码和服务器存根,Swagger的核心组件是OpenAPI规范(以前称为Swagger规范),它是一个用于定义和描述API的规范,OpenAPI规范使用JSON或YAML格式,包括API的路径、参数、响应、错误处理等信息,它提供了一种标准的方式来描述API的结构和行为Swagger是一个持续发展的项目,经历了以下几个主要版本的演变:Swagger 1.0:Swag
Swagger
chenyulancn的专栏
03-08 1216
1、swagger学习Swagger定义Swagger同类工具Swagger和web项目结合Swagger在公司项目中如何应用2、Swagger定义Swagger官网:http://swagger.ioGitHub地址:https://github.com/swagger-api官方注解文档:http://docs.swagger.io/swagger-core/apidocs/index.htm...
Swagger整合配置使用
weixin_44541136的博客
08-14 660
学习目标: 了解Swagger的作用和概念 了解前后端分离 在Springboot中集成Swagger Swagger简单配置使用 前后端分离式时代: 后端:后端控制层,服务层,数据访问层【后端团队】 前端:前端控制层,视图层【前端团队】 伪造后端数据,JSON。在开发的时候就已经存在,不需要后端,前端工程依旧能够跑 前后端如何交互-------通过API接口 前后端相对独立,松耦合 前后端甚至可以部署在不同的服务器上
API安全测试的思路与基于Swagger的API自动化安全测试实践.pdf
08-07
Swagger是一个开源的API框架,提供了一套完整的解决方案,用于设计、构建、记录和使用RESTful Web服务。Swagger定义了一种语言和框架无关的规范,用以描述API接口,使得API的发现、学习和使用变得简单。 基于...
swagger添加权限验证,swagger安全控制
lanwp5302的博客
10-10 6817
swagger添加权限验证,swagger安全控制 https://blog.csdn.net/luchenh/article/details/96598433
SpringBoot集成Swagger使用SpringSecurity控制访问权限
编码人生
09-25 1万+
1.加入swagger依赖 <dependency><!--添加Swagger依赖 --> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependen
Swagger正确打开方式(二)安全访问
bihaiyanyu的专栏
11-26 1万+
安全访问主要分以下两种: 1.环境的安全隔离。swagger基本上把项目所有的请求接口都罗列出了,而且支持接口在线调试,所以线上环境不应该开启swagger接口功能,试想如果开启了swagger功能,哪位开发测试人员,通过swagger就可以任意访问线上接口了,这显然是不安全的。 2.接口访问权限认证。我们的很多接口都是需要登录后才能访问及操作,为了安全起见,用swagger也不能例外。 环境的安全隔离 ...
SpringBoot集成Swagger2登录功能和安全认证_swagger 设置登录验证
2401_84968812的博客
05-13 930
创建拦截器 SwaggerInterceptor。新建 Swagger2Config。
Spring Boot + Swagger 3 (OpenAPI 3) + 安全示例(基本认证)
m0_67788957的博客
03-21 6245
在这篇文章中了解如何为 Spring Boot Swagger 示例实现 Spring Boot Basic Security。 在本教程中,我们将为 Spring Boot Swagger 示例实现 Spring Boot Basic Security。所以在使用 Swagger 访问端点时,Swagger 还允许我们配置 Spring Security 用户名和密码。 让我们开始 我们将修改我们在上一个教程中实现的 Spring Boot + Swagger 3 (OpenAPI 3) Hello
Swagger配置详解
m0_58943936的博客
03-18 3873
讲解Swagger概念及作用 , 以及如何在项目中继承Swagger自动生成API文档
Swagger-UI与Spring Cloud整合与安全设置
weixin_34026484的博客
08-26 121
2019独角兽企业重金招聘Python工程师标准>>> ...
Swagger如何访问需要权限验证的Web API
热门推荐
li123128的博客
07-02 3万+
Swagger如何访问需要权限验证的Web API这篇博文不是对asp.net core中使用Swagger作介绍,因为社区博客作了详细说明。今天主要说一下Swagger在Ocelot网关权限验证模式下的访问,以及Swagger请求应答的数据格式。首先创建四个项目:SwaggerOcelot:asp.net core web api类型,api网关项目SwaggerAuthorize:asp.ne...
在application.yml文件中添加一些安全配置,修复 Swagger接口泄露漏洞
04-23
好的,可以的。您可以在application.yml文件中添加以下配置来修复Swagger接口泄露漏洞: ``` spring: profiles: active: dev security: ignored: - /webjars/** - /swagger-resources/** - /v2/api-docs - /configuration/security - /configuration/ui swagger-ui: supportedSubmitMethods: [] datasource: url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC driver-class-name: com.mysql.jdbc.Driver username: root password: root ``` 请注意,这些配置仅适用于本地测试环境。在生产环境中,您应该确保实现更加安全配置方案
写文章

热门文章

  • List分页的几种方法 18535
  • map用法及对List<对象>分组成Map<String,List<对象>>的方案 11825
  • swagger配置使用及安全方案 7134
  • 开放原子训练营(第一季)铜锁探索国密及简单应用 5220
  • jdk8 stream filter()的特殊用法及与map()比较 2622

分类专栏

  • mybatis 1篇
  • jdk8之Stream 4篇

最新评论

  • map用法及对List<对象>分组成Map<String,List<对象>>的方案

    陈逸轩*^_^*: 虽然我读不懂,但我觉得写的不错

  • map用法及对List<对象>分组成Map<String,List<对象>>的方案

    ?oK?????: 写的依托答辩

  • map用法及对List<对象>分组成Map<String,List<对象>>的方案

    Rice_kil: 写的啥玩意 一点不清晰易读

  • map用法及对List<对象>分组成Map<String,List<对象>>的方案

    chatty 陈: 根据getForobject方法自动拼接参数(注意入参如果是map,需要先定义好参数的key,拼接的key要与map定义的字段对应) [code=java] Map<String, Object> map = new HashMap<String, Object>(); //获取整车信息数据,根据getForobject方法自动拼接参数(注意入参如果是map,需要先定义好参数的key,拼接的key要与map定义的字段对应) map = this.realService.getCarRealData(vin); 在查到的map中添加code和msg字段 map.put("CODE", mapAuth.get("CODE")); map.put("msg", mapAuth.get("msg")); return map; List<Map<String,Object>> list = new ArrayList<>(); list.add(realService.getCarRealData(vin)); [/code]

  • win10 idea2019.3配置docker教程

    chatty 陈: 在后续docker使用过程中,如果出现步骤10的问题,可操作对应的解决方案,亲测有效

最新文章

  • 开放原子训练营(第一季)铜锁探索国密及简单应用
  • mybatis--先导篇
  • map用法及对List<对象>分组成Map<String,List<对象>>的方案
2023年1篇
2021年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家聊城公园玻璃钢雕塑定制昌吉商场美陈常宁玻璃钢浮雕人物山水雕塑河南室外不锈钢玻璃钢人物雕塑蓝山玻璃钢花盆花器玻璃钢不锈钢卡通雕塑制造玻璃钢花盆制作方法视频教程北京大型商场美陈市场报价玻璃钢花盆雕塑厂家电话四川玻璃钢花盆价格河北大型商场创意商业美陈泰州商场美陈制作开封玻璃钢人物雕塑厂家浙江环保玻璃钢雕塑方法东莞玻璃钢动物雕塑价格景观玻璃钢雕塑专业厂家鹤壁玻璃钢卡通雕塑定做价格上海市玻璃钢雕塑加工成都户外玻璃钢雕塑厂家清远玻璃钢动物雕塑销售上等云南玻璃钢雕塑湖州户内玻璃钢雕塑制作松江区小型玻璃钢雕塑价格行情商场美陈执行江门透明玻璃钢雕塑摆件商场雕塑玻璃钢玻璃钢雕塑的描述合肥玻璃钢雕塑制品厂知名玻璃钢雕塑哪家好贵州玻璃钢花盆哪里有香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化