1. Spring Security 是什麼?
Spring Security是一個強大的和高度可定制的身份驗證和訪問控制框架,它的前身是 Acegi Security。
Spring Security著重於為Java應用程序提供身份驗證和授權。身份驗證是為用戶建立一個他所聲明的主體的過程(主體一般式指用戶,設備或可以在你系統中執行動作的其他系統)。授權指的是一個用戶能否在你的應用中執行某個操作,在到達授權判斷之前,身份的主體已經由身份驗證過程建立了。這些概念是通用的,並不是Spring Security特有的。
2. Spring Security特征是什麼?
Spring Security具有以下特征:
全面的和可擴展的支持身份驗證和授權
防止會話固定攻擊,比如點擊劫持,跨站請求偽造等
Servlet API 集成
與Spring Web MVC集成
3. Spring Security支持哪些身份認證模式?
在身份驗證層面,Spring Security廣泛支持各種身份驗證模式。 這些驗證模型絕大多數都由第三方提供,或正在開發的有關標准機構提供的,例如Internet Engineering Task Force。 作為補充,Spring Security也提供了自己的一套驗證功能。 Spring Security目前支持認證一體化和如下認證技術:
HTTP BASIC authentication headers (一個基於IEFT RFC的標准)
HTTP Digest authentication headers (一個基於IEFT RFC的標准)
HTTP X.509 client certificate exchange (一個基於IEFT RFC的標准)
LDAP (一個非常常見的跨平台認證需要做法,特別是在大環境)
Form-based authentication (提供簡單用戶接口的需求)
OpenID authentication
Computer Associates Siteminder
JA-SIG Central Authentication Service (也被稱為CAS,這是一個流行的開源單點登錄系統)
Transparent authentication context propagation for Remote Method Invocation (RMI) and HttpInvoker (一個Spring遠程調用協議)
Automatic "remember-me" authentication (這樣你可以設置一段時間,避免在一段時間內還需要重新驗證)
Anonymous authentication (允許任何調用,自動假設一個特定的安全主體)
Run-as authentication (這在一個會話內使用不同安全身份的時候是非常有用的)
Java Authentication and Authorization Service (JAAS)
Container integration with JBoss, Jetty, Resin and Tomcat (這樣,你可以繼續使用容器管理認證,如果想的話)
Java Open Source Single Sign On (JOSSO) *
OpenNMS Network Management Platform *
AppFuse *
AndroMDA *
Mule ESB *
Direct Web Request (DWR) *
Grails *
Tapestry *
JTrac *
Jasypt *
Roller *
Elastic Plath *
Atlassian Crowd *
4. 為什麼使用Spring Security?
許多獨立軟件供應商(ISVs, independent software vendors)采用Spring Security,是因為它擁有豐富靈活的驗證模型。 這樣,無論終端用戶需要什麼,他們都可以快速集成到系統中,不用花很多功夫,也不用讓用戶改變運行環境。 如果上述的驗證機制都沒有滿足你的需要,Spring Security是一個開放的平台,編寫自己的驗證機制是十分簡單的。 Spring Security的許多企業用戶需要整合不遵循任何特定安全標准的“遺留”系統,Spring Security在這類系統上也表現的很好。
有時基本的認證是不夠的。 有時你需要根據在主體和應用交互的方式來應用不同的安全措施。 比如,你可能,為了保護密碼,不被監聽或受到中間人攻擊,希望確保請求只通過HTTPS到達。 或者,你希望確保發起請求的是一個真正的人,而不是機器人或其他自動化程序。 這對保護找回密碼不被暴力攻擊特別有幫助,或者讓別人更難復制你程序中的關鍵內容。 為了幫助你實現這些目標,Spring Security支持自動“通道安全”,整合jcaptcha一體化進行人類用戶檢測。
Spring Security不僅提供認證功能,也提供了完備的授權功能。 在授權方面主要有三個領域,授權web請求,授權被調用方法,授權訪問單個對象的實例。 為了幫你了解它們之間的區別,對照考慮授在Servlet規范web模式安全,EJB容器管理安全,和文件系統安全方面的授權方式。 Spring Security在所有這些重要領域都提供了完備的能力,我們將在這份參考指南的後面進行探討。
5. 怎樣獲得Spring Security?
Spring Security是一個開源項目,我們可以通過subversion獲得源代碼。但大部分情況下,其實我們只需要Spring Security的jar就可以了。我們可以從 Spring Security 官網下載打包好的包,也可以從Maven中央倉庫下載獲得。
目前Spring Security最新的版本是4.0.0 RC1,但穩定版仍然是3.2.5。
Spring Security 學習之數據庫認證 http://www.linuxidc.com/Linux/2014-02/97407.htm
Spring Security 學習之LDAP認證 http://www.linuxidc.com/Linux/2014-02/97406.htm
Spring Security 學習之OpenID認證 http://www.linuxidc.com/Linux/2014-02/97405.htm
Spring Security 學習之X.509認證 http://www.linuxidc.com/Linux/2014-02/97404.htm
Spring Security 學習之HTTP基本認證和HTTP摘要認證 http://www.linuxidc.com/Linux/2014-02/97403.htm
Spring Security 學習之HTTP表單驗證 http://www.linuxidc.com/Linux/2014-02/97402.htm