一、我的前言
这是看慕课网老师讲的SpringSecurity的学习笔记,老师讲的很好,开篇就说到了我的心里,老师说道:
有一定经验的程序员如何提升自己?
1,每天都很忙,但是感觉水平没有提升
2,不知道学什么,遇到复杂的业务场景时,又感觉技术储备不够
3,工作中写过很多代码,面试时候几句话就说完了。(说道了我心坎里!)
这背后的原因就是,知识点的深入程度不够。
自己不是很聪明,慢慢来,一步步学习一下!
这是一门讲应用安全方面的课程,安全涉及很多东西,最基础也是最重要的就是认证和授权。java业界比较流行的认证授权框架,一个是apache-shiro,是一个轻量级的安全框架,另一个就是Spring Security了,当下SpringBoot比较流行,而SpringBoot默认就是使用SpringSecurity框架的,所以有必要学一下!
说起认证和授权,表现形式就是登录,就像当初刚工作的想法,登录就是一个form表单,输入用户名密码,去数据库查有无用户信息,实际上,认证授权要复杂的多,当初的想法真是太幼稚了!
在此,我想通过学习这个课,一步步完善一个通用的认证授权框架。现在前端技术层出不穷,VUE、Angular,,,,,前后端分离模式下,现在都流行使用token做认证。就我现在工作的公司而言,及时前端vue是基于浏览器的,可以使用cookie-session做用户认证,但用户信息也存在了redis。这样有利于做集群啊,相当于用redis做session共享嘛。
通过学习这个框架,一可以熟悉下Springboot,二可以把工作中用到的一些东西集成进去,看慢慢能不能做成一个脚手架工程?用到的时候拿来即用
1-2企业级认证特性
实际上,企业级的认证和授权是很复杂的:
1,同时支持多种认证方式:
除了用户名密码,还要支持手机短信、微信、qq等第三方登录。
2,同时支持多种前端渠道:
如浏览器登录(有cookie)、app登录(没有cookie)是不一样的。
3,其他的:
支持集群环境:集群里一台机器登录其他的怎么办
跨应用工作:单点登录SSO
Session控制:控制session的数量
控制用户权限:
防护与身份认证相关攻击
这些都是编写企业级认证模块需要考虑的问题和要实现的特性。本课程就是要实现一个可重用的企业级的认证和授权模块。
1-3企业级的认证和授权
涉及到三个spring项目:
1、Spring Security(核心):
提供认证和授权底层机制的实现,开发用户名+密码、手机号+短信
2、 Spring Social:
社交项目,将应用连接到社交网站,实现第三方认证如qq登录、微信登录
3、Spring Security OAuth:
上边三种认证方式都是基于服务器Session的,登录成功后用户信息放在服务器Session里的,APP跟服务器通讯是没有Session的,采用token方式存储认证用户的信息,Spring Security OAuth就是创建、管理、分发token用的,最终的效果就是让用户名+密码,手机号+短信、第三方登录这三种认证方式可以同时支持浏览器里基于服务器Session的认证,也可以在手机APP里基于token方式认证
1-4:课程目标
接下来进入第二章