Spring Security 2 的新功能

工程 | Ben Alex | 2007 年 12 月 06 日 | ...

我今天在瀏覽網誌圈時,發現一篇我讀過最短的網誌。 引用幾乎整個條目,「每次你使用 Acegi,就會有一個仙女死去。 悲慘的是,周圍實際上沒有更好的東西...」。

透過我們的社群論壇開發人員 清單JIRA使用者 會議 BOF訓練支援諮詢團隊部落格,我們收到大量社群回饋。 毫無疑問,許多人一直在尋求改進 Spring Security(以前稱為 Acegi)配置格式,而我們投入了大量時間使其成為可能。

由於我將在下週的 Spring Experience 會議上發表演講,Spring Security 2.0.0 M1 具有極其簡化的配置。 現在,您可以透過以下三個步驟將 Spring Security 新增至您的應用程式

  1. 將所需的 JAR 新增至您的類別路徑。 Maven 2 使用者只需在其 POM 中指定一個相依性,因為我們使用 Maven 來建置。
  2. 將單一篩選器和對應的映射新增至您的 web.xml。
  3. 將幾個元素新增至您的 Spring 容器組態檔。
將篩選器新增至 web.xml 需要以下程式碼

<filter>
    <filter-name>_filterChainProxy</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>_filterChainProxy</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

第三個也是最後一個步驟是將新的 Spring Security 2 命名空間新增至現有的組態檔,或建立一個包含您的安全性設定的新 XML 檔案。 對於許多使用者來說,該檔案將非常短,並且類似於



<beans:beans namespace declarations>
    <annotation-driven />

    <http auto-config="true">
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_REMEMBER" />
    </http>

    <repository>
        <user-service hash="md5:hex">
            <user name="rod" password="a564de63c2d0da68cf47586ee05984d7" authorities="ROLE_SUPERVISOR,ROLE_USER" />
        </user-service>
    </repository>
</beans:beans>

以上設定可靠地為您的 Web 應用程式提供以下功能

  • 基於表單的登入
  • 登出處理常式
  • 自動產生登入頁面
  • BASIC 驗證支援(非常適合遠端處理協定和 Web 服務)
  • 透過 Cookie 記住我支援
  • 匿名驗證(因此您的所有匿名使用者都有使用者名稱和角色)
  • 與您的資料庫支援的使用者儲存庫整合(您也可以在 XML 中使用 <user .../> 指定它們)
  • 自動強制執行 Spring 管理物件上的 @Secured 註釋
  • Servlet API 整合(即 HttpServletRequest.isUserInRole(String) 和 HttpServletRequest.getPrincipal())
  • 要求登入才能使用應用程式的任何部分
因此,<http auto-configure="true"> 陳述式為標準 Web 應用程式提供單一元素中所需的大部分功能。 當然,您可以微調個別設定,例如指定不同的領域名稱 (<http auto-configure="true" realm="My Application">),自訂您的登入頁面詳細資訊 (<form-login login-page="/myLogin.jsp" />),或切換到更進階的記住我權杖儲存庫 (<remember-me token-repository="persistedRepository" />)。

包括命名空間宣告手續,上面的組態檔約有 16 行。 舊的配置樣式需要大約 120 行 XML 才能實現相當的功能。

雖然組態改進是相當可觀的,但我們在 Spring Security 2.0.0 M1 中還有其他功能! 首先,您現在可以選擇將記住我權杖儲存在資料庫中,這可以提高安全性。 我們還有階層式角色支援,這是一種增強型授權別名策略。 此外,期待已久的使用者管理 API、NTLM 支援、Portlet 整合等等。

如果您想了解有關 Spring Security 2 的更多資訊,請來 The Spring Experience 看看它的實際運作情況。 安排了三個涵蓋 Spring Security 2 的會議,包括 簡介,涵蓋 新增功能 和改進,以及如何使用新的 Portlet 安全性整合。 對於那些無法參加的人,您將能夠在下週晚些時候下載第一個里程碑版本。

希望這些增強功能可以拯救一些仙女。

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

搶先一步

VMware 提供訓練和認證,以加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部