1、Spring Security是什么?
Spring Security 是一個安全框架,前身是 Acegi Security , 能夠為 Spring企業應用系統提供聲明式的安全訪問控制。
Spring Security 基於 Servlet 過濾器、 IoC和AOP , 為 Web 請求和方法調用提供身份確認和授權處理,避免了代碼耦合,減少了大量重復代碼工作。
Spring Security 提供了若干個可擴展的、可聲明式使用的過濾器處理攔截的web請求。
在web請求處理時, Spring Security框架根據請求url和聲明式配置,篩選出合適的一組過濾器集合攔截處理當前的web請求。
這些請求會被轉給Spring Security的安全訪問控制框架處理通過之后,請求再轉發應用程序處理,從而增強了應用的安全性。
Spring Security 提供了可擴展的認證、鑒權機制對Web請求進行相應對處理。
- 認證:識別並構建用戶對象,如:根據請求中的username,獲取登錄用戶的詳細信息,判斷用戶狀態,緩存用戶對象到請求上下文等。
- 決策:判斷用戶能否訪問當前請求,如:識別請求url,根據用戶、權限和資源(url)的對應關系,判斷用戶能否訪問當前請求url。
2、Spring Security的快速入門捷徑
2.1、部署“Tutorial”樣例程序,輸出調試日志,跟蹤處理過程
這個樣例包含在spring發布的zip壓縮包文件,名為:spring-security-samples-tutorial-<version>.war。
把這個文件重命名為tutorial.war(以便於部署到tomcat時簡化訪問的URL鏈接),放到tomcat下的webapp目錄下,然后啟動tomcat服務。
之后就可以用鏈接訪問這個應用程序了。
這個樣例程序沒有做太多的事,不過的確提供了一個很好的模板能很好的把spring安全集成到項目中。
絕大多數初學者在這個過程中常遇到的問題出現在簡單的配置錯誤或者路徑錯誤(或者WEB-inf/lib目錄下缺失jar包)。
必須在一個可以運行的配置環境的基礎上開始構建項目。
當運行程序的時候, 確保自己熟悉Spring Security調試日志輸出(日志輸出默認為打開狀態)。
雖然框架輸出詳細的日志,但是很多人卻使用得很失敗。
作為一個未授權的用戶點擊了一個安全的鏈接,當登錄,退出等等情況下的時候到底發生了什么?
當進入到安全過濾器鏈開始處理的時候,將會看到每一個http請求及如何處理的日志,
所以許多在論壇中報道的問題可以按網頁瀏覽器請求的相應日志記錄來匹配查找得以解決 。
2.2、部署通訊錄(Contacts)樣例嘗試更多spring安全框架高級屬性
這個樣例將嘗試更多spring安全框架高級屬性,尤其是ACL模塊。
文件spring-security-samples-contacts-<version>.war是標准的web MVC應用程序,
它可以讓以特殊的用戶(列舉在登錄頁面的用戶)登錄並且查看數據庫中的”通訊錄”,每個登錄用戶都有若干權限列表,
如何登錄用戶有必需的權限的就可以查看若干的通訊錄列表。
有某個通訊錄管理權限的用戶就可以刪除這個通訊錄,創建或者刪除其中實例的權限,因此可以分配(重分配)其它用戶讀,寫,管理通訊錄中實例的權限。
Spring安全應用在方法級通過在接口ContactManager使用注釋(annotations)配置來引入的。
2.3、使用指南樣例(Tutorial Sample)來完成實際的集成工作
到這個步驟應該對spring Security有了很好的領會,剩下的工作應該是如果設計應用程序來實現安全了。
推薦使用指南樣例(Tutorial Sample)來完成實際的集成工作,即使有復雜的需求。
大多數在論壇中報告問題的都是出自配置的問題,因為他們在一開始在並不知道將要如果進行的時候做了太多的改變.