项目模块与依赖
即使你不使用 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 的持久化 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-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 对象签名与加密)框架的支持。JOSE 框架旨在提供一种在各方之间安全传输声明的方法。它由一系列规范构建而成:
-
JSON Web Token (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 Tokens 来保护 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 进行测试的支持。
Taglibs — spring-security-taglibs.jar
提供 Spring Security 的 JSP 标签实现。
表 8. 标签库依赖项
依赖项 | 版本 | 描述 |
---|---|---|
spring-security-core | ||
spring-security-web | ||
spring-security-acl | 如果你在使用 accesscontrollist 标签或带有 ACL 的 hasPermission() 表达式时,此项是必需的(可选)。 | |
spring-expression | 如果你在标签访问约束中使用 SPEL 表达式,此项是必需的。 |