Spring Security Oauth2
最近在研究Oauth2,打算将它应用到实际项目当中,主要是做接口鉴权这一块。
通过源码以及借鉴其他工程,有了如下了解:
- OAuth2源码地址:https://github.com/spring-projects/spring-security-oauth
- 本工程的源码地址:https://github.com/yanzhenyidai/oauth-example.git
Oauth2在简单应用中我们大致只需要关心如下三个类,继承重写当中的方法:
- AuthorizationServerConfigurerAdapter
- ResourceServerConfigurerAdapter
- WebSecurityConfigurerAdapter
AuthorizationServerConfigurerAdapter
这个在Oauth中是做授权相关的内容,以及负责存储token和token的时间范围处理。
在这个类当中,我们只需要重写里面的两个configure方法,一个是客户端连接数据源信息,一个是进行授权认证的操作。
代码如下:
1 | @Override |
ResourceServerConfigurerAdapter
资源服务,可以看作在微服务体系中的每一个服务,一个服务相当于一个资源,个人理解下来每个资源都需要实现这一个类,实现的机制下来理解为在
类中写入tokenStore,指向redis服务器,由Oauth内部连接redis来判断token是否在有效期内。如果不做这一个
的实现,也可以在全局请求的时候进行拦截,获取到token,调用/oauth/check_token这个接口来进行鉴权的操
作,下面贴上在同一个应用内的代码:
1 | @Override |
WebSecurityConfigurerAdapter
这个在Oauth中的意义就是进行请求拦截和过滤,以及用户是否可用的判断逻辑了,相当于认证的逻辑,代码如下:
1 | @Override |