Swagger2怎么整合OAuth2来在线调试接口?
前言
Swagger2
作为侵入式文档中比较出色的一员,支持接口认证的在线调试肯定是不在话下的,当我们在调用OAuth2
所保护的接口时,需要将有效的AccessToken
作为请求Header
内Authorization
的值时,我们才拥有了访问权限,那么我们在使用Swagger
在线调试时该设置AccessToken
的值呢?
Swagger2
作为侵入式文档中比较出色的一员,支持接口认证的在线调试肯定是不在话下的,当我们在调用OAuth2
所保护的接口时,需要将有效的AccessToken
作为请求Header
内Authorization
的值时,我们才拥有了访问权限,那么我们在使用Swagger
在线调试时该设置AccessToken
的值呢?
接口文档在前后分离的项目中是必不可少的一部分,文档的编写一直以来都是一件头疼的事情,写程序不写注释
、不写文档
这几乎是程序员的通病,Swagger2
的产生给广大的程序员们带来了曙光,只需要在接口类或者接口的方法上添加注解配置,就可以实现文档效果,除了可以应用到单体应用
,在微服务架构中
也是可以使用的,只需要整合zuul
就可以实现各个服务的文档整合。
其实理解起来比较简单,类似于我们平时一直在使用的logback
、log4j
这种的日志框架的其中一个功能部分,minbox-logging
分布式日志框架目前独立于api-boot-plugins
,已经加入了minbox-projects
开源组织,之前博客有一系列的文章来讲解了ApiBoot Logging
(内部是集成的minbox-logging
)日志组件的使用以及极简的配置方式,可以访问ApiBoot 组件系列文章使用汇总了解日志组件的使用详情。
使用Redis
来存储OAuth2
相关的客户端信息以及生成的AccessToken
是一个不错的选择,Redis
与生俱来的的高效率、集群部署是比较出色的功能,如果用来作为服务认证中心
的数据存储,可以大大的提高响应效率。
Redis
还支持超时自动删除功能,OAuth2
所生成的AccessToken
相关的数据在超过配置的有效时间
后就会自动被清除,这样也隐形的提高了接口的安全性。
既然Redis
可以做到这么好,我们该怎么实现代码逻辑呢?
OAuth2
所生成的AccessToken
以及RefreshToken
都存在过期时间,当在有效期内才可以拿来作为会话身份发起请求,否者认证中心
会直接拦截无效请求提示已过期
,那么我们怎么修改这个过期时间来满足我们的业务场景呢?
OAuth2
默认的AccessToken
是由DefaultAccessTokenConverter
生成,是具有唯一性的UUID
随机字符串,我们如果想要使用JWT
来格式化AccessToken
就需要使用JwtAccessTokenConverter
来进行格式化,当然如果你有自己独特的业务可以自己实现AccessTokenConverter
接口,并将实现类交付给IOC
托管即可。
当我们整合了Spring Security
以及OAuth2
后发现,有一些业务请求是需要开放的,因为种种原因这时访问者还没有身份标识(比如:用户刚来,还没有注册,需要进行新用户注册,这时注册业务相关的接口都应该是开放的
),下面我们来看看ApiBoot
是怎么排除路径不进行权限拦截的。