述
之前的 Spring Social 中,我们是去访问别人的 OAuth 服务,在我们自己的系统中,客户端访问服务还是基于 session 的,结构大致如下:
如果是前后端分离开发,再按上面这种方式开发就比较繁琐,而且安全性和客户体验差, 一旦 JSESSIONID 泄露,那可能就会被伪造身份,获取用户的信息等, 而且有些前端技术是不支持cookie的,比如小程序
现在大多数的开发都是前后端分离的,一个后端的服务可能会给不同的地方调用, 前端, App, Wap 等等, 基本上都是基于 Token 的这种 OAth 认证, 客户端通过参数或者请求头中携带token, 服务端进行验证从而决定是否能访问服务器资源
Spring Security OAuth
Spring Security OAuth 封装了服务提供商大部分的操作, 我们之前的 Spring Social 是封装了客户端和服务提供商交互的流程
我们要实现的服务提供商的大致是这样的
其中 Spring Security OAuth 已经提供了4中授权模式,我们只需要将之前实现的自定义的认证方式改造一下就可以了
token 的生成 Spring Security OAuth 也提供了默认的实现,至于认证,就是在 Spring security 过滤器链上加了一个过滤器 OAuth2AuthencationProcessingFilter