專案模組與相依性

即使您不使用 Maven,我們仍建議您參考 `pom.xml` 檔案,以了解第三方相依性與版本。另一個好方法是檢查範例應用程式中包含的程式庫。

本節提供 Spring Security 中模組的參考,以及它們在運作中的應用程式中運行所需的額外相依性。我們不包含僅在建置或測試 Spring Security 本身時使用的相依性。我們也不包含外部相依性所需的傳遞相依性。

所需的 Spring 版本列在專案網站上,因此範例中 Spring 相依性的特定版本已省略。請注意,範例中列為「選用」的某些相依性,在 Spring 應用程式中可能仍為其他非安全性功能所必需。此外,如果「選用」相依性在大多數應用程式中使用,則實際上可能不會在專案的 Maven POM 檔案中標記為「選用」。它們僅在您不使用指定功能時才不需要它們的意義上是「選用」的。

當一個模組相依於另一個 Spring Security 模組時,它所相依的模組的非選用相依性也被視為是必需的,並且不會單獨列出。

核心 — `spring-security-core.jar`

此模組包含核心身份驗證和存取控制類別與介面、遠端支援和基本配置 API。任何使用 Spring Security 的應用程式都必須使用它。它支援獨立應用程式、遠端用戶端、方法(服務層)安全性和 JDBC 使用者配置。它包含以下頂層套件

  • org.springframework.security.core

  • org.springframework.security.access

  • org.springframework.security.authentication

  • org.springframework.security.provisioning

表 1. 核心相依性
相依性 版本 描述

ehcache

1.6.2

如果使用基於 Ehcache 的使用者快取實作,則為必要(選用)。

spring-aop

方法安全基於 Spring AOP

spring-beans

Spring 設定的必要條件

spring-expression

基於表達式的方法安全性的必要條件(選用)

spring-jdbc

如果使用資料庫儲存使用者資料,則為必要(選用)。

spring-tx

如果使用資料庫儲存使用者資料,則為必要(選用)。

aspectjrt

1.6.10

如果使用 AspectJ 支援,則為必要(選用)。

jsr250-api

1.0

如果您使用 JSR-250 方法安全註釋,則為必要(選用)。

遠端處理 — `spring-security-remoting.jar`

此模組提供與 Spring Remoting 的整合。除非您正在編寫使用 Spring Remoting 的遠端用戶端,否則您不需要此模組。主要套件是 `org.springframework.security.remoting`。

表 2. 遠端處理相依性
相依性 版本 描述

spring-security-core

spring-web

使用 HTTP 遠端處理支援的用戶端所必需。

Web — `spring-security-web.jar`

此模組包含過濾器和相關的 Web 安全基礎架構程式碼。它包含任何具有 servlet API 相依性的內容。如果您需要 Spring Security Web 身份驗證服務和基於 URL 的存取控制,則需要它。主要套件是 `org.springframework.security.web`。

表 3. Web 相依性
相依性 版本 描述

spring-security-core

spring-web

使用 HTTP 遠端處理支援的用戶端所必需。

spring-jdbc

JDBC 持久化「記住我」令牌儲存庫的必要條件(選用)。

spring-tx

「記住我」持久化令牌儲存庫實作的必要條件(選用)。

設定 — `spring-security-config.jar`

此模組包含安全性命名空間解析程式碼和 Java 設定程式碼。如果您使用 Spring Security XML 命名空間進行設定或 Spring Security 的 Java 設定支援,則需要它。主要套件是 `org.springframework.security.config`。這些類別均不適用於在應用程式中直接使用。

表 4. 設定相依性
相依性 版本 描述

spring-security-core

spring-security-web

如果您使用任何與 Web 相關的命名空間設定,則為必要(選用)。

spring-security-ldap

如果您使用 LDAP 命名空間選項,則為必要(選用)。

aspectjweaver

1.6.10

如果使用 protect-pointcut 命名空間語法,則為必要(選用)。

LDAP — `spring-security-ldap.jar`

此模組提供 LDAP 身份驗證和配置程式碼。如果您需要使用 LDAP 身份驗證或管理 LDAP 使用者條目,則為必要。頂層套件是 `org.springframework.security.ldap`。

表 5. LDAP 相依性
相依性 版本 描述

spring-security-core

spring-ldap-core

1.3.0

LDAP 支援基於 Spring LDAP。

spring-tx

需要資料例外類別。

apache-ds

1.5.5

如果您使用嵌入式 LDAP 伺服器,則為必要(選用)。如果您使用 `apache-ds`,則需要 `apacheds-core`、`apacheds-core-entry`、`apacheds-protocol-shared`、`apacheds-protocol-ldap` 和 `apacheds-server-jndi` 模組。

shared-ldap

0.9.15

如果您使用嵌入式 LDAP 伺服器,則為必要(選用)。

ldapsdk

4.1

Mozilla LdapSDK。如果您將密碼策略功能與 OpenLDAP 一起使用,則用於解碼 LDAP 密碼策略控制。

OAuth 2.0 核心 — `spring-security-oauth2-core.jar`

`spring-security-oauth2-core.jar` 包含核心類別和介面,這些類別和介面為 OAuth 2.0 授權框架和 OpenID Connect Core 1.0 提供支援。使用 OAuth 2.0 或 OpenID Connect Core 1.0 的應用程式(例如用戶端、資源伺服器和授權伺服器)需要它。頂層套件是 `org.springframework.security.oauth2.core`。

OAuth 2.0 用戶端 — `spring-security-oauth2-client.jar`

`spring-security-oauth2-client.jar` 包含 Spring Security 對 OAuth 2.0 授權框架和 OpenID Connect Core 1.0 的用戶端支援。使用 OAuth 2.0 或 OpenID Connect Core 1.0 的應用程式(例如用戶端、資源伺服器和授權伺服器)需要它。頂層套件是 `org.springframework.security.oauth2.core`。

OAuth 2.0 JOSE — `spring-security-oauth2-jose.jar`

`spring-security-oauth2-jose.jar` 包含 Spring Security 對 JOSE(Javascript Object Signing and Encryption)框架的支援。JOSE 框架旨在提供一種在各方之間安全傳輸宣告的方法。它由一系列規範構建而成

  • JSON Web Token (JWT)

  • JSON Web Signature (JWS)

  • JSON Web Encryption (JWE)

  • JSON Web Key (JWK)

它包含以下頂層套件

  • org.springframework.security.oauth2.jwt

  • org.springframework.security.oauth2.jose

OAuth 2.0 資源伺服器 — `spring-security-oauth2-resource-server.jar`

`spring-security-oauth2-resource-server.jar` 包含 Spring Security 對 OAuth 2.0 資源伺服器的支援。它用於透過使用 OAuth 2.0 Bearer 令牌來保護 API。頂層套件是 `org.springframework.security.oauth2.server.resource`。

ACL — `spring-security-acl.jar`

此模組包含專門的領域物件 ACL 實作。它用於將安全性應用於應用程式中的特定領域物件實例。頂層套件是 `org.springframework.security.acls`。

表 6. ACL 相依性
相依性 版本 描述

spring-security-core

ehcache

1.6.2

如果使用基於 Ehcache 的 ACL 快取實作,則為必要(如果您使用自己的實作,則為選用)。

spring-jdbc

如果您使用預設的基於 JDBC 的 AclService,則為必要(如果您實作自己的 AclService,則為選用)。

spring-tx

如果您使用預設的基於 JDBC 的 AclService,則為必要(如果您實作自己的 AclService,則為選用)。

CAS — `spring-security-cas.jar`

此模組包含 Spring Security 的 CAS 用戶端整合。如果您想將 Spring Security Web 身份驗證與 CAS 單一登入伺服器一起使用,則應使用它。頂層套件是 `org.springframework.security.cas`。

表 7. CAS 相依性
相依性 版本 描述

spring-security-core

spring-security-web

cas-client-core

3.1.12

JA-SIG CAS 用戶端。這是 Spring Security 整合的基礎。

ehcache

1.6.2

如果您使用基於 Ehcache 的票證快取,則為必要(選用)。

測試 — `spring-security-test.jar`

此模組包含對使用 Spring Security 進行測試的支援。

Taglibs — `spring-security-taglibs.jar`

提供 Spring Security 的 JSP 標籤實作。

表 8. Taglib 相依性
相依性 版本 描述

spring-security-core

spring-security-web

spring-security-acl

如果您將 `accesscontrollist` 標籤或 `hasPermission()` 表達式與 ACL 一起使用,則為必要(選用)。

spring-expression

如果您在標籤存取約束中使用 SPEL 表達式,則為必要。