天天看點

Spring Security簡介

    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。

繼續閱讀