SpringOAuth2相关内容
关于Spring OAuth2还有很多的内容需要理清楚,弄明白,于是就又写了一篇文章。我的OAuth2使用的代码主要是微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!
1.验证过期时间
Spring OAuth2有如下默认的几个请求方法,可以通过以下的方法进行检查和刷新token
1 | ## 获取access_token请求(/oauth/token) |
当然也可以解码access_token自行判断
1 | String realToken = access_token.replace("Bearer ", ""); |
1.聊聊 OAuth 2.0 的 token expire_in 使用 (关于expire_in的配置说明,还是很明白的)
2.How to set expire_in in OAUTH 2.0?
3.在OAuth 2中模仿DefaultTokenServices写一个新的tokenServices来提供个性化服务
4.Spring Boot,Spring Security实现OAuth2 + JWT认证
5.Spring Security+OAuth2 + JWT认证以及携带用户信息 (JWT的加密方式)
6.Spring Security Oauth2 认证(获取token/刷新token)流程(password模式) (这篇文章写了如何验证token是否有效,以及如何刷新token)
2.自定义JWT失效时间
一开始,我想知道Spring OAuth2默认的失效时间,但是很难找到,上来都是自定义tokenservice进行自定义失效时间的判断。
当然,最后还是找到了,oAuth2.0中access_token默认有效时长为12个小时,refresh_token默认时长为30天。当然可以通过下面两种方法实现自定义。
(1) 在AuthorizationServerConfigurerAdapter,重写一个TokenServices,实现自定义默认时长。(对应了参考文章4)
(2) 提供自定义 TokenServices方法。(对应参考文章2)
其实两者本质都是一样的,只是注入方式不同罢了。
1.看完这篇文章,你如果还不知道怎么设置Oauth2令牌过期时间算我输 (这篇文章讲了一个ApiBoot OAuth的东西,估计是自己写的一个类库,暂时没有仔细研究)
2.spring-security-oauth2 修改默认token失效时间 (这篇文章提供了自定义TokenServices方法)
3.JWT过期刷新问题,实现十五天免登陆
4.Spring Security oAuth2.0设置access_token和refresh_token的有效时长 (这篇文章告诉了我默认的有效时长,也提供了如何自定义有效时长的方法)
3.续期
被动刷新
(1) 客户端携带 token
访问资源服务器资源
(2) 资源服务器拦截 token
去认证服务器 check_token
(3) 认证服务器返回 token
过期错误,资源服务器包装错误信息返回给客户端
(4) 客户端根据返回错误信息(响应码),直接调用认证服务器 refresh_token
(5) 认证服务器返回新的 token
给客户端, 然后再次发起 资源调用
被动请求的缺点是,用户当次请求会失败(返回token失败),对一些业务连贯的操作不是很友好
主动刷新
(1) 客户端存在计算逻辑,计算下发token 有效期
(2) 若token要过期之前,主动发起刷新
主动请求的缺点是,客户端占用部分计算资源来处理 token
失效问题
1.聊聊 OAuth 2.0 的 Token 续期处理 (这里提供了两种方式进行续期的方式,一种就是主动续期,一种就是被动续期,两者各有优缺点)
2.双token刷新、续期,access_token和refresh_token实效如何设置
3.SpringBoot 整合 spring security oauth2 jwt完整示例 附源码 (增加JwtTokenEnhancer类,主要定义了token过期时间以及加密方式)
4.Spring OAuth2 token自动续签方案
4.检查token是否过期
在很多的文章中,有一个请求就是oauth/check_token,说是可以检查token是否过期,但是时间上,在我刚开始进行测试的时候,出现了401错误。
解决方法就是开启token验证
1 |
|
检查通过会返回如下的信息:
1./oauth/check_token 401 (这里提到了check_token默认是不允许访问的)
2.Spring Security Oauth2 授权服务开发 (这里其实有check_token的用法,但是没有说明在那里定义的)
4.聊聊 OAuth 2.0 的 Token 续期处理 (这里其实是自己实现了一个check_token的方法)