Project Modules and Dependencies

即使您不使用 Maven,我们建议您查阅 pom.xml 文件,以便了解第三方依赖项和版本。另一个好主意是检查包含在示例应用程序中的库。 本节提供了 Spring Security 中模块的参考,以及它们在运行的应用程序中运行所需的附加依赖项。我们不包括仅在构建或测试 Spring Security 本身时才会使用的依赖项。我们也不包括外部依赖项所需的传递性依赖项。 项目网站上列出了所需的 Spring 版本,因此在示例中 Spring 依赖项的特定版本被省略。请注意,示例中列为 “optional” 的某些依赖项仍可能需要用于 Spring 应用程序中的其他非安全功能。此外,如果在大多数应用程序中使用了列为 “optional” 的依赖项,则不一定会在项目的 Maven POM 文件中标记为这样。它们 “optional” 仅表示在您不使用指定功能的情况下不需要它们。 如果一个模块依赖另一个 Spring Security 模块,那么它所依赖模块的非可选依赖项也被认为是必需的,并且不会单独列出。

Core — `spring-security-core.jar`

此模块包含核心身份验证和访问控制类和接口、远程支持和基本预置 API。任何使用 Spring Security 的应用程序都需要它。它支持独立应用程序、远程客户端、方法(服务层)安全性和 JDBC 用户预置。它包含以下顶级软件包:

  • org.springframework.security.core

  • org.springframework.security.access

  • org.springframework.security.authentication

  • org.springframework.security.provisioning

Table 1. Core Dependencies
Dependency Version Description

ehcache

1.6.2

如果使用基于 Ehcache 的用户缓存实施(可选),则需要。

spring-aop

方法安全性基于 Spring AOP

spring-beans

Required for Spring configuration

spring-expression

基于表达式的表达式安全性需要(可选)

spring-jdbc

如果使用数据库存储用户数据,则需要(可选)。

spring-tx

如果使用数据库存储用户数据,则需要(可选)。

aspectjrt

1.6.10

如果使用 AspectJ 支持,则需要(可选)。

jsr250-api

1.0

如果您使用 JSR-250 方法安全性注释,则需要(可选)。

Remoting — `spring-security-remoting.jar`

此模块提供与 Spring Remoting 的集成。除非您正在编写使用 Spring Remoting 的远程客户端,否则不需要此模块。主要软件包是 org.springframework.security.remoting

Table 2. Remoting Dependencies
Dependency Version Description

spring-security-core

spring-web

HTTP 远程支持客户端必需。

Web — `spring-security-web.jar`

此模块包含过滤器和相关的 Web 安全基础设施代码。它包含具有 Servlet API 依赖项的内容。如果您需要 Spring Security Web 身份验证服务和基于 URL 的访问控制,则需要它。主要软件包是 org.springframework.security.web

Table 3. Web Dependencies
Dependency Version Description

spring-security-core

spring-web

使用 HTTP 远程支持的客户端必需。

spring-jdbc

基于 JDBC 的永久记住我令牌资源库必需(可选)。

spring-tx

记住我永久令牌资源库实施需要(可选)。

Config — `spring-security-config.jar`

此模块包含安全命名空间解析代码和 Java 配置代码。如果您将 Spring Security XML 命名空间用于配置或 Spring Security 的 Java 配置支持,则需要它。主要软件包是 org.springframework.security.config。任何类都不打算在应用程序中直接使用。

Table 4. Config Dependencies
Dependency Version Description

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

Table 5. LDAP Dependencies
Dependency Version Description

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

Mozila LdapSDK。如果你在 OpenLDAP 中使用密码策略功能,则可以用于解码 LDAP 密码策略控制。

OAuth 2.0 Core — `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 Client — `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 Resource Server — `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

Table 6. ACL Dependencies
Dependency Version Description

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 客户端集成。如果您想通过 CAS 单点登录服务器使用 Spring Security Web 身份验证,则应使用它。顶级软件包是 org.springframework.security.cas

Table 7. CAS Dependencies
Dependency Version Description

spring-security-core

spring-security-web

cas-client-core

3.1.12

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

ehcache

1.6.2

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

Test — `spring-security-test.jar`

此模块包含对 Spring Security 测试的支持。

Taglibs — `spring-security-taglibs.jar`

提供 Spring Security 的 JSP 标签实现。

Table 8. Taglib Dependencies
Dependency Version Description

spring-security-core

spring-security-web

spring-security-acl

如果您在 ACL 中使用 accesscontrollist 标记或 hasPermission() 表达式(可选),则需要。

spring-expression

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