這是看慕課網老師講的SpringSecurity的學習筆記,老師講的很好,開篇就說到了個人內心,老師說道:html
有必定經驗的程序員如何提高本身?前端
1,天天都很忙,可是感受水平沒有提高vue
2,不知道學什麼,遇到複雜的業務場景時,又感受技術儲備不夠java
3,工做中寫過不少代碼,面試時候幾句話就說完了。(說道了我心坎裏!)程序員
這背後的緣由就是,知識點的深刻程度不夠。面試
本身不是很聰明,慢慢來,一步步學習一下!redis
這是一門講應用安全方面的課程,安全涉及不少東西,最基礎也是最重要的就是認證和受權。java業界比較流行的認證受權框架,一個是apache-shiro,是一個輕量級的安全框架,另外一個就是Spring Security了,當下SpringBoot比較流行,而SpringBoot默認就是使用SpringSecurity框架的,因此有必要學一下!spring
提及認證和受權,表現形式就是登陸,就像當初剛工做的想法,登陸就是一個form表單,輸入用戶名密碼,去數據庫查有無用戶信息,實際上,認證受權要複雜的多,當初的想法真是太幼稚了!數據庫
在此,我想經過學習這個課,一步步完善一個通用的認證受權框架。如今前端技術層出不窮,VUE、Angular,,,,,先後端分離模式下,如今都流行使用token作認證。就我如今工做的公司而言,及時前端vue是基於瀏覽器的,可使用cookie-session作用戶認證,但用戶信息也存在了redis。這樣有利於作集羣啊,至關於用redis作session共享嘛。apache
經過學習這個框架,一能夠熟悉下Springboot,二能夠把工做中用到的一些東西集成進去,看慢慢能不能作成一個腳手架工程?用到的時候拿來即用
實際上,企業級的認證和受權是很複雜的:
1,同時支持多種認證方式:
除了用戶名密碼,還要支持手機短信、微信、qq等第三方登陸。
2,同時支持多種前端渠道:
如瀏覽器登陸(有cookie)、app登陸(沒有cookie)是不同的。
3,其餘的:
支持集羣環境:集羣裏一臺機器登陸其餘的怎麼辦
跨應用工做:單點登陸SSO
Session控制:控制session的數量
控制用戶權限:
防禦與身份認證相關攻擊
這些都是編寫企業級認證模塊須要考慮的問題和要實現的特性。本課程就是要實現一個可重用的企業級的認證和受權模塊。
涉及到三個spring項目:
一、Spring Security(核心):
提供認證和受權底層機制的實現,開發用戶名+密碼、手機號+短信
二、 Spring Social:
社交項目,將應用鏈接到社交網站,實現第三方認證如qq登陸、微信登陸
三、Spring Security OAuth:
上邊三種認證方式都是基於服務器Session的,登陸成功後用戶信息放在服務器Session裏的,APP跟服務器通信是沒有Session的,採用token方式存儲認證用戶的信息,Spring Security OAuth就是建立、管理、分發token用的,最終的效果就是讓用戶名+密碼,手機號+短信、第三方登陸這三種認證方式能夠同時支持瀏覽器裏基於服務器Session的認證,也能夠在手機APP裏基於token方式認證
接下來進入第二章