spring security 入門教程 詳細講解


1 什么是spring security?

一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方式的安全框架(簡單說是對訪問權限進行控制)。

應用的安全性包括用戶認證(Authentication)和用戶授權(Authorization)兩個部分。

用戶認證指的是驗證某個用戶是否為系統中的合法主體,也就是說用戶能否訪問該系統。

用戶認證一般要求用戶提供用戶名和密碼。系統通過校驗用戶名和密碼來完成認證過程。

用戶授權指的是驗證某個用戶是否有權限執行某個操作。在一個系統中,不同用戶所具有的權限是不同的。

比如對一個文件來說,有的用戶只能進行讀取,而有的用戶可以進行修改。

一般來說,系統會為不同的用戶分配不同的角色,而每個角色則對應一系列的權限。   

spring security的主要核心功能為 認證和授權,所有的架構也是基於這兩個核心功能去實現的。

2 框架簡介

眾所周知想要對Web資源進行保護,最好的辦法莫過於Filter,要想對方法調用進行保護,最好的辦法莫過於AOP。所以springSecurity在我們進行用戶認證以及授予權限的時候,通過各種各樣的攔截器來控制權限的訪問,從而實現安全。

spring Security功能的實現主要是由一系列過濾器鏈相互配合完成

 

1.springSecurityFilterChain中各個過濾器怎么創建的只需了解即可。不要太過關注。

2.重點記憶UsernamePasswordAuthenticationFilter,ExceptionTranslationFilter, FilterSecurityInterceptor這三個過濾器的作用及源碼分析。

3.重點記憶認證中Authentication,AuthenticationManager,ProviderManager, AuthenticationProvider,UserDetailsService,UserDetails這些類的作用及源碼分析。

4.重點記憶授權中FilterInvoction,SecurityMetadataSource,AccessDecisionManager的作用。

3 框架的核心組件

  SecurityContextHolder:提供對SecurityContext的訪問

  SecurityContext,:持有Authentication對象和其他可能需要的信息

  AuthenticationManager 其中可以包含多個AuthenticationProvider

  ProviderManager對象為AuthenticationManager接口的實現類

  AuthenticationProvider 主要用來進行認證操作的類 調用其中的authenticate()方法去進行認證操作

  Authentication:Spring Security方式的認證主體

  GrantedAuthority:對認證主題的應用層面的授權,含當前用戶的權限信息,通常使用角色表示

 UserDetails:構建Authentication對象必須的信息,可以自定義,可能需要訪問DB得到

  UserDetailsService:通過username構建UserDetails對象,通過loadUserByUsername根據userName獲取UserDetail對象

  (可以在這里基於自身業務進行自定義的實現  如通過數據庫,xml,緩存獲取等)

4 工作流程是怎樣的?

 

認證流程:

 

授權流程:

 

5 ***怎么用? - demo

6 有什么特點/ 優點?

 

1.將用戶登錄,權限控制分離出來,達到和其他控制、邏輯代碼完全分離。
2.在控制、邏輯代碼里面,可以通過spring容器的到我們登錄用戶的信息,可插拔性的體現。
3.自定義的權限控制訪問,不但是對某個URL可操控,同時可以對某個方法進行控制。
4.提供一些登錄相關的操作,如記住我、登錄成功跳轉頁面設定等等。
5.安全控制性好,對並發session可控性好。

 

7 如何做到權限控制??從大方面 一直到 代碼細節,由表及里來說

 


免責聲明!

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



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