一、我的前言

从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:课程目标