一、我的前言
這是看慕課網老師講的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:課程目標
接下來進入第二章