一.背景
现在网上充斥着各种SpringSecurity+Oauth2的教程和源码分析,但是并未找到合适我的项目的。项目中需求是这样的,首先需要对接App,提供手机号验证码登录,密码登录,一键登录,微信登录等等,还需要自动登录和可供前端调用的第三方验证码登录。真的是难煞我也!经过一个月的努力终于实现了初版,并且结合SpringCloud进行独立授权服务开发,将其他所有的服务保护起来。
二.材料准备
1.需要先了解SpringSecurity是干嘛的
SpringSecurity是基于责任链的认证授权框架,相比较认证授权框架Shiro来说,它比较重,不像Shiro使用配置起来那么简单。
认证流程简图如下:
2.Oauth2是什么
Oauth2用于第三方认证授权的标准,用以第三方获取用户信息。
网上讲的比较清楚的可以参考阮一峰的博客:http://www.ruanyifeng.com/blog/2019/04/oauth_design.html
三.实战
1.自定义核心配置类MyWebSecurityConfig
该类中定义了以下几个方面的配置:
(1)认证流程中的过滤器
(2)令牌存储方式使用redis
(3)不需要拦截的URL和静态资源
2.登录成处理LoginSuccessHandler
我们业务中经常会有一些业务是需要登录成功后处理的,这里不仅详细配置了登录成功返回的json信息;还可以定义成功之后的一些业务处理。
3.授权服务器配置AuthServerConfig
最近刚刚换了工作,还未来得及详细整理,可参考项目代码 :