知识改变命运,撸码使我快乐,2019年你的发迹线还好吗?<br/>
点赞再看,养成习惯<br/>
本篇文章对应源码码云(Gitee)仓库<br/>
https://gitee.com/minbox-projects/api-boot-chapter ,您的Star是给我最大动力
Swagger2
作为侵入式文档中比较出色的一员,支持接口认证的在线调试肯定是不在话下的,当我们在调用 OAuth2
所保护的接口时,需要将有效的 AccessToken
作为请求 Header
内 Authorization
的值时,我们才拥有了访问权限,那么我们在使用 Swagger
在线调试时该设置 AccessToken
的值呢?
<!--more-->
本文所需ApiBoot相关链接:
在之前文章「 使用Swagger2作为文档来描述你的接口信息
」我们已经讲到了使用 Swagger2
来简单的描述接口,提供可视化在线的接口文档,我们本章的主要目的是来集成使用 OAuth2
实现在线调试接口,我们把之前章节测试的接口 UserController
复制到本篇文章中以便于测试,本章项目 pom.xml
依赖如下所示:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-starter-swagger</artifactId> </dependency> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-starter-security-oauth-jwt</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
如果你看过 ApiBoot Security
、 ApiBoot OAuth
你应该知道,通过 application.yml
文件简单的几行配置就可以集成 Spring Security
整合 OAuth2
,本章来使用 内存方式
配置 用户列表
以及 客户端列表
。
如果你想深入的了解这个神奇的 ApiBoot
安全组件,可以通过依赖文章汇总链接学习。
通过 @EnableApiBootSwagger
注解来启用 ApiBoot Swagger
相关功能,在 XxxApplication
入口类配置如下所示:
@SpringBootApplication @EnableApiBootSwagger public class ApibootSwaggerIntegratedOauthApplication { public static void main(String[] args) { SpringApplication.run(ApibootSwaggerIntegratedOauthApplication.class, args); } }
使用 grant_type=password
获取 AccessToken
时,需要我们传递用户的 username
、 password
,使用默认的内存方式配置我们只需要在 application.yml
文件内添加如下配置:
api: boot: security: # 配置安全用户列表 users: - username: yuqiyu password: 123123 # 资源保护路径前缀,默认为/api/** auth-prefix: /**
我们来添加 OAuth2
所需要的客户端列表配置信息,使用默认的内存方式配置客户端的 client-id
、 client-secret
,只需要修改 application.yml
文件内容如下所示:
api: boot: oauth: # 配置OAuth客户端列表 clients: - clientId: minbox clientSecret: chapter
Swagger2
可视化界面有很多静态资源组成,比如: js/css/images
等,而集成 Spring Security
后这些资源需要排除权限拦截才可以访问到,如果是使用传统的方式整合 Spring Security
,需要使用 WebSecurity
来进行忽略路径才可以,而通过 ApiBoot Security
则是不用考虑这一点,在内部已经对 Swagger
的静态资源文件做出了排除。
通过 Application
方式启动本章项目, Swagger
可视化界面访问: http://localhost:8080/swagger-ui.html
通过 CURL
方式获取用户: yuqiyu
的请求令牌,如下所示:
➜ ~ curl -X POST minbox:chapter@localhost:8080/oauth/token -d 'grant_type=password&username=yuqiyu&password=123123' {"access_token":"304676a4-b9a6-4c4d-af40-e439b934aba8","token_type":"bearer","refresh_token":"ee2b5744-6947-4677-862e-fcf9517afca5","expires_in":7199,"scope":"api"}
我们把获取的 AccessToken
与类型进行组合成: Bearer 304676a4-b9a6-4c4d-af40-e439b934aba8
,将该令牌字符串配置到 Swagger
界面上,如下图所示:
输入后点击 Authorize
按钮即可。
Swagger
的在线调试其实内部是模拟发送请求,将界面上输入的参数进行组合装配,发送到需要测试的接口路径,而上图设置 AccessToken
,也是一个临时保存, 刷新页面就会丢失
,发送请求时会自动追加到 Request Header
列表内。
如果您喜欢本篇文章请为源码仓库点个 Star
,谢谢!!!
本篇文章示例源码可以通过以下途径获取,目录为 apiboot-swagger-integrated-oauth
:
作者个人 博客
使用开源框架 ApiBoot 助你成为Api接口服务架构师