Spring Security 入門(四)--Spring Social


前面幾篇文章講了Spring Security的驗證和授權的流程,還有基於數據庫的用戶驗證。基於數據庫的用戶驗證是傳統的登錄方式,先在應用中注冊,然后根據注冊的賬號、密碼進行登錄。但現在的大多數應用都提供了利用第三方賬號登錄的方式。常見的就是訪問網站時可以用QQ、微信、微博等社交網絡的賬號進行快速登錄,而不用再去注冊。這樣做的好處主要有:

  1. 可以省去要用戶重新注冊的流程,同時也可以與用戶已有的社交網絡建立連接,可以通過與社交網絡的集成來迅速積累人氣;
  2. 允許用戶把應用中的相關內容分享到社交網絡中,可以保持用戶的粘性,同時推廣應用本身。

對於用戶來說,通常的場景是在注冊或登錄頁面,選擇第三方社交網絡來進行連接。然后跳轉到第三方網站進行登錄和授權。完成上述步驟之后,新的用戶會被創建。在連接過程中,應用可以從第三方社交網站獲取到用戶的概要信息,來完成新用戶的創建。當新用戶創建完成之后,下次用戶可以直接使用第三方社交網絡的賬號進行登錄。

上述步驟中對賬號進行登錄和授權,並不是直接把賬號和密碼給第三方應用獲取用戶信息,這樣做是很不安全的,而是通過在第三方應用和HTTP服務提供商(微信、QQ等應用的服務器)設置一個授權層,將用戶資源和第三方應用隔離,使得第三方應用無法直接訪問資源,從而起到保護資源的作用。這個授權層就是OAuth2.0。先說OAuth,它是一個關於授權(authorization)的開放網絡標准,目前的版本是2.0版。詳細的解讀推薦看阮一峰大神的博文理解OAuth 2.0,真是深入淺出啊。

OAuth 2.0的運行流程,大概如下圖所示

OAuth2.0 圖中六個步驟,第二步第三方應用如何獲取用戶授權是最關鍵的步驟。理解OAuth 2.0文中介紹了四種授權模式,授權碼模式是最常用也是最安全的模式。流程如下圖所示:

授權碼模式 當第三方應用得到認證服務器發放的令牌,就可以去資源服務器中獲取用戶的信息,然后根據用戶信息構建Authentication,並放入SecurityContext中,這樣就完成了新用戶的創建。完成上述登錄和授權的流程工作量還是比較大的。這就不得不介紹實現第三方登錄的的框架Spring Social,從它的名字也可以看出主要是為了實現社交登錄(Social Login)。Spring Social的功能就是把上述登錄授權的流程封裝到SocialAuthenticationFilter攔截器里,並把這個攔截器加入到Spring Security的過濾器鏈中。直接上圖

Spring Security過濾器鏈 具體的實現代碼,下篇文章再講。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM