项目模块和依赖项

即使您不使用 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

需要进行基于表达式的 method security(可选)

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 的持久化 remember-me 令牌存储库需要此依赖项(可选)。

spring-tx

remember-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 命名空间选项,则需要此依赖项(可选)。

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-coreapacheds-core-entryapacheds-protocol-sharedapacheds-protocol-ldapapacheds-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 对象签名和加密)框架的支持。JOSE 框架旨在提供一种在各方之间安全传输声明的方法。它构建于一系列规范之上

  • JSON Web 令牌 (JWT)

  • JSON Web 签名 (JWS)

  • JSON Web 加密 (JWE)

  • JSON Web 密钥 (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,则需要此依赖项(如果实现您自己的,则为可选)。

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-core

3.1.12

JA-SIG CAS 客户端。这是 Spring Security 集成的基础。

ehcache

1.6.2

如果您使用基于 Ehcache 的票证缓存,则需要此依赖项(可选)。

测试 — spring-security-test.jar

此模块包含对使用 Spring Security 进行测试的支持。

标签库 — spring-security-taglibs.jar

提供 Spring Security 的 JSP 标签实现。

表 8. 标签库依赖项
依赖项 版本 描述

spring-security-core

spring-security-web

spring-security-acl

如果您使用 accesscontrollist 标签或 hasPermission() 表达式与 ACL,则需要此依赖项(可选)。

spring-expression

如果您在标签访问约束中使用 SPEL 表达式,则需要此依赖项。