Spring
所提供的OAuth2
集成策略,支持多种方式存储认证信息
以及客户端信息
,由于在之前的文章中讲解使用时把知识点进行了拆分,有很多同学不太会组合使用,很多单独问我ApiBoot
所提供的OAuth2
的整合后,多个客户端该怎么配置?
9 篇博文 含有标签「Spring Security」
查看所有标签OAuth2使用Redis来存储客户端信息以及AccessToken
使用Redis
来存储OAuth2
相关的客户端信息以及生成的AccessToken
是一个不错的选择,Redis
与生俱来的的高效率、集群部署是比较出色的功能,如果用来作为服务认证中心
的数据存储,可以大大的提高响应效率。
Redis
还支持超时自动删除功能,OAuth2
所生成的AccessToken
相关的数据在超过配置的有效时间
后就会自动被清除,这样也隐形的提高了接口的安全性。
既然Redis
可以做到这么好,我们该怎么实现代码逻辑呢?
OAuth2设置AccessToken的过期时间
OAuth2
所生成的AccessToken
以及RefreshToken
都存在过期时间,当在有效期内才可以拿来作为会话身份发起请求,否者认证中心
会直接拦截无效请求提示已过期
,那么我们怎么修改这个过期时间来满足我们的业务场景呢?
还不会使用JWT格式化OAuth2令牌吗?
OAuth2
默认的AccessToken
是由DefaultAccessTokenConverter
生成,是具有唯一性的UUID
随机字符串,我们如果想要使用JWT
来格式化AccessToken
就需要使用JwtAccessTokenConverter
来进行格式化,当然如果你有自己独特的业务可以自己实现AccessTokenConverter
接口,并将实现类交付给IOC
托管即可。
原来SpringSecurity整合OAuth2后开放权限拦截路径还能这么玩?
当我们整合了Spring Security
以及OAuth2
后发现,有一些业务请求是需要开放的,因为种种原因这时访问者还没有身份标识(比如:用户刚来,还没有注册,需要进行新用户注册,这时注册业务相关的接口都应该是开放的
),下面我们来看看ApiBoot
是怎么排除路径不进行权限拦截的。
自定义OAuth2短信登录GrantType
Spring
提供的原生的OAuth2
依赖内置了几种比较常用的授权方式:password
、authorization-code
、client_credentials
、refresh_token
、implicit
等,虽然可以满足我们日常的需求,不过针对一些特殊的需求还是捉襟见肘,有点无奈,比如:微信登录
、短信登录
...,针对这一点ApiBoot
通过修改Spring OAuth2
依赖的源码,可以根据业务进行自定义添加grantType
。
见过这么简单的方式整合SpringSecurity & OAuth2的自定义查询用户吗?
SpringSecurity
整合OAuth2
是开发者公认的资源保护
、服务认证
的最佳搭配伙伴,这对好基友一直在默默的守护着应用服务的安全,根据访问者的不同角色可以颗粒度控制到具体的接口,从而实现权限的细微划分。
ApiBoot零代码整合Spring Security的JDBC方式获取AccessToken
ApiBoot Security
内部提供了两种方式进行读取需要认证的用户信息,在之前的文章中讲到过ApiBoot Security
使用内存方式(memory)
不写一行代码就可以实现用户的认证并获取AccessToken
,那我们使用JDBC
方式是不是也是这么的简单呢?
零代码整合Spring Security & OAuth2
接口服务的安全性一直是程序员比较注重的一个问题,成熟的安全框架也比较多,其中一个组合就是Spring Security
与OAuth2
的整合,在ApiBoot
内通过代码的封装、自动化配置实现了自动化整合这两大安全框架。