跳到主要内容
版本:7.0.2

项目模块与依赖关系

DeepSeek V3 中英对照 Project Modules Project Modules and Dependencies

即使您不使用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. 核心依赖项

依赖项版本描述
ehcache1.6.2如果使用基于 Ehcache 的用户缓存实现,则需要此依赖(可选)。
spring-aop方法安全基于 Spring AOP
spring-beansSpring 配置所需
spring-expression基于表达式的方法安全所需(可选)
spring-jdbc如果使用数据库存储用户数据,则需要此依赖(可选)。
spring-tx如果使用数据库存储用户数据,则需要此依赖(可选)。
aspectjrt1.6.10如果使用 AspectJ 支持,则需要此依赖(可选)。
jsr250-api1.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 的持久化 remember-me 令牌存储库所需(可选)。
spring-txremember-me 持久化令牌存储库实现所需(可选)。

配置 — 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 命名空间选项,则需要此依赖项(可选)。
aspectjweaver1.6.10如果使用 protect-pointcut 命名空间语法,则需要此依赖项(可选)。

LDAP — spring-security-ldap.jar

本模块提供LDAP认证与配置代码。如需使用LDAP认证或管理LDAP用户条目,则必须引入此模块。其顶级包为 org.springframework.security.ldap

表 5. LDAP 依赖项

依赖项版本描述
spring-security-core
spring-ldap-core1.3.0LDAP 支持基于 Spring LDAP。
spring-tx需要数据异常类。
com.unboundid:unboundid-ldapsdk如果使用嵌入式 LDAP 服务器则必需
ldapsdk4.1Mozilla 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 对象签名与加密)框架的支持。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 承载令牌来保护 API。其顶级包是 org.springframework.security.oauth2.server.resource

ACL — spring-security-acl.jar

本模块包含一个专门的领域对象访问控制列表(ACL)实现。它用于在应用程序中对特定的领域对象实例应用安全控制。其顶层包为 org.springframework.security.acls

表 6. ACL 依赖关系

依赖项版本描述
spring-security-core
ehcache1.6.2如果使用基于 Ehcache 的 ACL 缓存实现则需要(如果使用自己的实现,则为可选)。
spring-jdbc如果使用默认的基于 JDBC 的 AclService 则需要(如果实现自己的服务,则为可选)。
spring-tx如果使用默认的基于 JDBC 的 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-core3.1.12JA-SIG CAS 客户端。这是 Spring Security 集成的基础。
ehcache1.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 标签或带有 ACL 的 hasPermission() 表达式,则需要此依赖(可选)。
spring-expression如果你在标签访问约束中使用 SPEL 表达式,则需要此依赖。