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 應用程式提供以下功能

  • 基於表單的登入
  • 登出處理程式
  • 自動生成登入頁面
  • 基本身份驗證支援(非常適合遠端協議和 Web 服務)
  • 透過 cookie 提供記住我支援
  • 匿名身份驗證(因此您的所有匿名使用者都有使用者名稱和角色)
  • 與您的資料庫支援的使用者儲存庫整合(您也可以使用 <user .../> 在 XML 中指定它們)
  • 自動強制執行 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 社群中所有即將舉行的活動。

檢視全部