# 项目模块和依赖项

即使你不使用 Maven，我们也建议你查阅`pom.xml`文件，以了解第三方的依赖关系和版本。另一个好主意是检查示例应用程序中包含的库。

本节提供了 Spring Security 中的模块的参考，以及它们在运行中的应用程序中起作用所需的附加依赖关系。我们不包括仅在构建或测试 Spring 安全性本身时使用的依赖关系。我们也不包括外部依赖项所要求的传递依赖项。

项目网站上列出了 Spring Required 的版本，因此在下面的 Spring 依赖项中省略了具体的版本。请注意，在 Spring 应用程序中的其他非安全功能可能仍然需要下面列出的一些“可选”依赖项。此外，如果在大多数应用程序中使用了被列为“可选”的依赖项，那么它们在项目的 Maven  POM 文件中实际上可能不会被标记为可选的依赖项。它们是“可选的”，只是因为除非你使用指定的功能，否则你不需要它们。

当一个模块依赖于另一个 Spring 安全模块时，它所依赖的模块的非可选依赖也被认为是必需的，并且不会单独列出。

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

该模块包含核心身份验证和访问控制类和接口、远程支持和基本供应 API。任何使用 Spring 安全性的应用程序都需要它。它支持独立的应用程序、远程客户机、方法（服务层）安全性和 JDBC 用户配置。它包含以下顶级包：

* `org.springframework.security.core`

* `org.springframework.security.access`

* `org.springframework.security.authentication`

* `org.springframework.security.provisioning`

|   Dependency    |Version|说明|
|-----------------|-------|---------------------------------------------------------------------------|
|     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 方法-安全注释（可选），则需要这样做。|

## remoting—`spring-security-remoting.jar`

该模块提供了与 Spring 远程的集成。你不需要这样做，除非你正在编写使用远程处理的远程客户机。主包是`org.springframework.security.remoting`。

|     Dependency     |Version|说明|
|--------------------|-------|-----------------------------------------------------|
|spring-security-core|       |                                                     |
|     spring-web     |       |对于使用 HTTP 远程支持的客户端来说是必需的。|

## web—`spring-security-web.jar`

这个模块包含过滤器和相关的 Web 安全基础设施代码。它包含任何具有 Servlet API 依赖关系的内容。如果你需要 Spring 安全性 Web 身份验证服务和基于 URL 的访问控制，那么你就需要它。主包是`org.springframework.security.web`。

|     Dependency     |Version|说明|
|--------------------|-------|-------------------------------------------------------------------------------|
|spring-security-core|       |                                                                               |
|     spring-web     |       |Spring Web 支持类被广泛使用。|
|    spring-jdbc     |       |基于 JDBC 的持久 Rememe-Me 令牌存储库所需（可选）.|
|     spring-tx      |       |Rememe-Me 持久令牌存储库实现所需（可选）.|

## 配置—`spring-security-config.jar`

这个模块包含安全名称空间解析代码和 Java 配置代码。如果你使用 Spring Security XML 名称空间进行配置或 Spring Security 的 Java 配置支持，那么你就需要它。主包是`org.springframework.security.config`。这些类都不打算在应用程序中直接使用。

|      Dependency      |Version|说明|
|----------------------|-------|-----------------------------------------------------------------------------|
| spring-security-core |       |                                                                             |
| spring-security-web  |       |如果你正在使用任何与 Web 相关的名称空间配置（可选），则需要这样做。|
| spring-security-ldap |       |如果你正在使用 LDAP 命名空间选项（可选），则是必需的。|
|spring-security-openid|       |如果你使用的是 OpenID 身份验证（可选的），则需要这样做。|
|    aspectjweaver     |1.6.10 |如果使用 protect-pointcut 命名空间语法（可选），则需要.|

## LDAP—`spring-security-ldap.jar`

该模块提供 LDAP 身份验证和配置代码。如果你需要使用 LDAP 身份验证或管理 LDAP 用户条目，则需要使用它。顶级包是`org.springframework.security.ldap`。

|                                                            Dependency                                                             |Version|说明|
|-----------------------------------------------------------------------------------------------------------------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------------------------|
|                                                       spring-security-core                                                        |       |                                                                                                                                               |
|                                                         spring-ldap-core                                                          | 1.3.0 |LDAP 支持基于 Spring LDAP。|
|                                                             spring-tx                                                             |       |数据异常类是必需的。|
|apache-ds <sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup>| 1.5.5 |如果你使用的是嵌入式 LDAP 服务器（可选），则需要这样做。|
|                                                            shared-ldap                                                            |0.9.15 |如果你使用的是嵌入式 LDAP 服务器（可选），则需要这样做。|
|                                                              ldapsdk                                                              |  4.1  |例如，如果你使用 OpenLDAP 的密码策略功能，则使用 Mozilla ldapsdk.<gtr="15"/>对 LDAP 密码策略控件进行解码。|

## OAuth2.0 核心—`spring-security-oauth2-core.jar`

`spring-security-oauth2-core.jar`包含支持 OAuth2.0 授权框架和 OpenID Connect Core1.0 的核心类和接口。它是使用 OAuth2.0 或 OpenID Connect Core1.0 的应用程序所必需的，例如客户机、资源服务器和授权服务器。顶级包是`org.springframework.security.oauth2.core`。

## OAuth2.0 客户端—`spring-security-oauth2-client.jar`

`spring-security-oauth2-client.jar`包含 Spring Security 对 OAuth2.0 授权框架和 OpenID Connect Core1.0 的客户端支持。它是使用 OAuth2.0 登录或 OAuth 客户端支持的应用程序所必需的。顶级包是`org.springframework.security.oauth2.client`。

## OAuth2.0Jose—`spring-security-oauth2-jose.jar`

`spring-security-oauth2-jose.jar`包含 Spring Security 对 Jose（JavaScript 对象签名和加密）框架的支持。Jose 框架旨在提供一种在各方之间安全地转移权利要求的方法。它是由一系列规范构建而成的：

* JSON Web Token

* JSON Web 签名

* JSON 网络加密

* JSON Web Key

它包含以下顶级包：

* `org.springframework.security.oauth2.jwt`

* `org.springframework.security.oauth2.jose`

## OAuth2.0 资源服务器—`spring-security-oauth2-resource-server.jar`

`spring-security-oauth2-resource-server.jar`包含 Spring Security 对 OAuth2.0 资源服务器的支持。它用于通过 OAuth2.0 承载令牌保护 API。顶级包是`org.springframework.security.oauth2.server.resource`。

## ACL—`spring-security-acl.jar`

这个模块包含一个专门的域对象 ACL 实现。它用于将安全性应用于应用程序中的特定域对象实例。顶级包是`org.springframework.security.acls`。

|     Dependency     |Version|说明|
|--------------------|-------|-------------------------------------------------------------------------------------------------------------------|
|spring-security-core|       |                                                                                                                   |
|      ehcache       | 1.6.2 |如果使用了基于 EHCache 的 ACL 缓存实现，则需要（如果你使用自己的实现，则可以选择）。|
|    spring-jdbc     |       |如果你使用的是默认的基于 JDBC 的 ACLService（如果你实现了自己的 ACLService，则是可选的），则是必需的。|
|     spring-tx      |       |如果你使用的是默认的基于 JDBC 的 ACLService（如果你实现了自己的 ACLService，则是可选的），则是必需的。|

## 化学文摘社—`spring-security-cas.jar`

该模块包含 Spring Security 的 CAS 客户端集成。如果你想对 CAS 单点登录服务器使用 Spring 安全性 Web 身份验证，那么你应该使用它。顶级包是`org.springframework.security.cas`。

|     Dependency     |Version|说明|
|--------------------|-------|--------------------------------------------------------------------------------|
|spring-security-core|       |                                                                                |
|spring-security-web |       |                                                                                |
|  cas-client-core   |3.1.12 |JA-SIG CAS 客户机.<br/>这是 Spring 安全集成的基础。|
|      ehcache       | 1.6.2 |如果你正在使用基于 EHCache 的票证缓存（可选），则需要这样做。|

## OpenID—`spring-security-openid.jar`

|   |OpenID1.0 和 2.0 协议已被弃用，并鼓励用户迁移到 OpenID Connect，这得到了 Spring-Security-OAuth2 的支持。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------|

此模块包含对 OpenID Web 身份验证的支持。它用于针对外部 OpenID 服务器对用户进行身份验证。顶级包是`org.springframework.security.openid`。它需要 OpenID4Java。

|     Dependency     |Version|说明|
|--------------------|-------|------------------------------------------------------|
|spring-security-core|       |                                                      |
|spring-security-web |       |                                                      |
| openid4java-nodeps | 0.9.6 |Spring Security 的 OpenID 集成使用了 OpenID4Java。|
|     httpclient     | 4.1.1 |OpenID4Java-Nodeps 依赖于 HttpClient4。|
|       guice        |  2.0  |OpenID4Java-Nodeps 依赖于 Guice2。|

## 测试—`spring-security-test.jar`

该模块包含对具有 Spring 安全性的测试的支持。

## taglibs—`spring-secuity-taglibs.jar`

提供 Spring 安全性的 JSP 标记实现。

|     Dependency     |Version|说明|
|--------------------|-------|------------------------------------------------------------------------------------------------------------|
|spring-security-core|       |                                                                                                            |
|spring-security-web |       |                                                                                                            |
|spring-security-acl |       |如果使用带有 ACLS 的`accesscontrollist`标记或`hasPermission()`表达式（可选），则需要这样做。|
| spring-expression  |       |如果你在标记访问约束中使用 SPEL 表达式，则需要这样做。|

---

[1](#_footnoteref_1)。需要的模块有`apacheds-core`，`apacheds-core-entry`，`apacheds-protocol-shared`，`apacheds-protocol-ldap`和`apacheds-server-jndi`。