一、我的前言
从17年11月开始做外派,合同是项目合同(项目结束就又该找工作了)不是很忙,在这几个干java的不写java,天天整angular,不是很感兴趣,而我的工作内容大部分是帆软报表,我想还是学点后端技术,由于上个公司是做app上的项目的,但是其中好多东西不明白,在那里也没有学习的机会,从入职到辞职经理就没有找我聊过天,学不到什么东西,所以就辞职了,现在很想搞清楚APP上的一些东西,如认证授权,接口安全方面的问题等,因为去面试的时候人家会问到,而我却答不上来,所以下决心要学一下!在网上找到了龙果学院的《从无到有搭建互联网运维架构》教程,这个课程涉及知识点较多,但是都是蜻蜓点水式的,不深入讲解,只是让我了解了更多新的东西,我想先纵向学那个,遇到不会的东西,停顿下来,再横向学习。其中这个Spring Security就是里边涉及到了OAuth2的时候只是提了一下,没有细讲,所以找到了这个教程,是慕课网的一个老师,老师讲的很好,开篇就说到了我的心里,老师说道:
有一定经验的程序员如何提升自己?
1,每天都很忙,但是感觉水平没有提升
2,不知道学什么,遇到复杂的业务场景时,又感觉技术储备不够
3,工作中写过很多代码,面试时候几句话就说完了。(说道了我心坎里!)
这背后的原因就是,知识点的深入程度不够。
自己不是很聪明,慢慢来,一步步学习一下!
1-1课程性质:
这是一门聚焦的课:
1,把每一个知识点所有常见场景和特性都覆盖到
2,讲代码和源码
3,不止要实现功能,还要封装成通用的给别人用。
就像刚工作时候我所认为的登录,就是表单输入用户名密码,提交,去数据库查询,有的话放入到session。
1-2企业级认证特性
实际上,企业级的认证和授权是很复杂的:
1,同时支持多种认证方式:
除了用户名密码,还要支持手机短信、微信、qq等。
2,同时支持多种前端渠道:
如浏览器登录、app登录是不一样的。
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:课程目标