项目模块和依赖
即使您不使用 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
依赖 | 版本 | 描述 |
---|---|---|
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
。
依赖 | 版本 | 描述 |
---|---|---|
spring-security-core |
||
spring-web |
使用 HTTP 远程支持的客户端所需。 |
Web 模块 — spring-security-web.jar
此模块包含过滤器和相关的 Web 安全基础设施代码。它包含所有依赖于 Servlet API 的内容。如果您需要 Spring Security Web 认证服务和基于 URL 的访问控制,则需要此模块。主要包是 org.springframework.security.web
。
依赖 | 版本 | 描述 |
---|---|---|
spring-security-core |
||
spring-web |
使用 HTTP 远程支持的客户端所需。 |
|
spring-jdbc |
JDBC 持久化记住我令牌仓库所需(可选)。 |
|
spring-tx |
记住我持久化令牌仓库实现所需(可选)。 |
配置模块 — spring-security-config.jar
此模块包含安全命名空间解析代码和 Java 配置代码。如果您使用 Spring Security XML 命名空间进行配置或使用 Spring Security 的 Java 配置支持,则需要此模块。主要包是 org.springframework.security.config
。此模块中的类不适合直接在应用程序中使用。
依赖 | 版本 | 描述 |
---|---|---|
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
。
依赖 | 版本 | 描述 |
---|---|---|
spring-security-core |
||
spring-ldap-core |
1.3.0 |
LDAP 支持基于 Spring LDAP。 |
spring-tx |
需要 Data 异常类。 |
|
apache-ds |
1.5.5 |
如果使用嵌入式 LDAP 服务器则需要(可选)。如果您使用 |
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 Object Signing and Encryption) 框架的支持。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 Bearer 令牌保护 API。顶级包是 org.springframework.security.oauth2.server.resource
。
ACL 模块 — spring-security-acl.jar
此模块包含专门的领域对象 ACL 实现。它用于对应用程序中的特定领域对象实例应用安全。顶级包是 org.springframework.security.acls
。
依赖 | 版本 | 描述 |
---|---|---|
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
。
依赖 | 版本 | 描述 |
---|---|---|
spring-security-core |
||
spring-security-web |
||
cas-client-core |
3.1.12 |
JA-SIG CAS 客户端。这是 Spring Security 集成的基础。 |
ehcache |
1.6.2 |
如果使用基于 Ehcache 的票证缓存则需要(可选)。 |