Spring Security - 簡介



什麼是 Spring Security?

Spring Security 是 Spring 專案或模組之一,用於保護基於 Spring 的應用程式。Spring Security 為我們在應用程式中實現身份驗證和授權提供了許多內建功能。我們可以使用這些功能並進行修改來快速保護應用程式。除此之外,Spring Security 還允許對前面提到的功能進行大量自定義,以實現我們自己的複雜身份驗證和授權。

除了提供各種內建的身份驗證和授權選項外,Spring Security 還允許我們根據需要自定義身份驗證過程。從自定義登入頁面到我們自己定製的身份驗證提供程式和身份驗證過濾器,我們可以幾乎自定義身份驗證過程的各個方面。我們可以定義自己的身份驗證過程,範圍從使用使用者名稱和密碼的基本身份驗證到使用令牌和 OTP 的複雜的兩因素身份驗證。此外,我們可以使用各種資料庫——關係型和非關係型,使用各種密碼編碼器,鎖定惡意使用者帳戶等等。

身份驗證和授權

身份驗證和授權是 Spring Security 的兩個主要組成部分。

  • 身份驗證 − 身份驗證是為了確保使用者或客戶端就是他們聲稱的那個人。Spring Security 提供了許多方法來執行身份驗證。Spring Security 支援基本身份驗證、LDAP 身份驗證、JDBC 身份驗證等。

  • 授權 − 授權確保使用者是否具有執行該操作的許可權。如果我們的應用程式是一個複雜的應用程式,具有不同型別的使用者,例如管理員、普通使用者和其他特權較低的使用者,我們需要在應用程式中維護訪問控制。例如,訪客使用者不應該能夠訪問管理員內容。因此,為了控制對應用程式中各種資源的訪問,我們需要檢查使用者是否具有訪問該資源的許可權。Spring Security 支援角色、宣告等來提供使用者級別的授權。

Spring Security 支援大量的身份驗證模型。大多數這些身份驗證模型都是由第三方或網際網路工程任務組 (IETF) 作為標準機構開發的。能夠與廣泛的第三方身份驗證模型整合,Spring Security 在開發人員中非常受歡迎,可以整合到他們的專案中。Spring 也提供它自己的身份驗證功能。以下列表顯示了 Spring Security 支援的各種身份驗證方法。

  • HTTP 基本身份驗證頭

  • HTTP摘要身份驗證頭

  • HTTP X.509 客戶端證書交換

  • LDAP

  • 基於表單的身份驗證

  • OpenID 身份驗證

  • 基於預先建立的請求頭的身份驗證

  • JA-SIG 中央身份驗證服務,一個開源單點登入系統

  • 遠端方法呼叫 (RMI) 和 HttpInvoker 的透明身份驗證上下文傳播

  • 記住我

  • 匿名身份驗證

  • Run-as 身份驗證

  • Java 身份驗證和授權服務 (JAAS)

  • JEE 容器身份驗證

  • Kerberos

  • Java 開源單點登入 (JOSSO)

  • OpenNMS 網路管理平臺

  • AppFuse

  • AndroMDA

  • Mule ESB

  • 直接 Web 請求 (DWR)

  • Grails

  • Tapestry

  • JTrac

  • Jasypt

  • Roller

  • Elastic Path

  • Atlassian Crowd

我們也可以將自己的自定義身份驗證機制與 Spring Security 整合。

Spring Security 的歷史

Spring Security 最初於 2003 年後期作為用於 Spring 的 Acegi 安全系統啟動,這是一個簡單的基於 Spring 的安全實現。後來,隨著 Spring 社群成員詢問現有的框架,它被分配給社群成員之一來工作,到 2004 年 1 月,一個由 20 多人組成的團隊開始參與這個專案,該專案後來於 2004 年 3 月成為一個 SourceForge 專案。最初,Spring Security 沒有自己的身份驗證模組,它完全依賴於容器管理的安全,而 Acegi 安全系統只專注於授權模組。

在接下來的 2005 年,引入了 Acegi Security 特定的身份驗證服務,Acegi 安全系統成為 Spring 的官方子專案。2006 年 5 月,在眾多生產軟體中使用、社群改進和錯誤修復之後,釋出了 1.0.0 版本。到 2007 年底,Acegi 安全系統更名為 Spring Security,併成為 Spring 官方產品組合專案。

廣告
© . All rights reserved.