项目模块和依赖(Project Modules and Dependencies)
即使你不用 Maven,我们建议您查阅 pom.xml 文件以了解第三方依赖关系和版本。另一个好主意是检查示例应用程序中包含的库。
本节提供了 Spring Security 中模块的参考,以及它们在运行的应用程序中运行所需的附加依赖项。我们不包括仅在构建或测试 SpringSecurity 本身时使用的依赖项。我们也不包括外部依赖项所需的传递依赖项。
需要的 Spring 版本在项目网站上列出,因此示例中的 Spring 依赖项省略了特定的版本。注意,例子中列出的一些“可选”的依赖关系可能仍然是 Spring 应用程序中其他非安全功能所需要的。另外,如果在大多数应用程序中使用“可选”的依赖关系,那么在项目的 Maven POM 文件中可能不会被标记为“可选”的依赖关系。它们是“可选的”,只是在您不需要它们的意义上,除非您使用指定的功能。
如果一个模块依赖于另一个 Spring Security 模块,那么它所依赖的模块的非可选依赖项也被认为是必需的,并且不会单独列出。
Core — spring-security-core.jar
此模块包含核心身份验证和访问控制类和接口、远程处理支持和基本配置 API。任何使用 SpringSecurity 的应用程序都需要它。它支持独立应用程序、远程客户端、方法(服务层)安全性和 JDBC 用户配置(这里说的方法(服务层)安全性和 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 的用户缓存实现,则必需(可选)。Required if the Ehcache-based user cache implementation is used (optional). |
spring-aop | 方法安全性(Method security) is based on Spring AOP | |
spring-beans | Spring 配置所需。 Required for Spring configuration | |
spring-expression | 基于表达式的方法安全性所必需的(可选)。Required for expression-based method security (optional) | |
spring-jdbc | 如果使用数据库存储用户数据则必需(可选)。Required if using a database to store user data (optional). | |
spring-tx | 如果使用数据库存储用户数据则必需(可选)。Required if using a database to store user data (optional). | |
aspectjrt | 1.6.10 | 如果使用 AspectJ 支持则必需(可选)。Required if using AspectJ support (optional). |
jsr250-api | 1.0 | 如果使用JSR-250方法安全注释则必需(可选)。Required if you are using JSR-250 method-security annotations (optional). |
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 远程处理支持的客户端所必需的。Required for clients which use HTTP remoting support. |
Web — spring-security-web.jar
此模块包含过滤器和相关的网络安全基础设施代码。它包含任何具有 servletAPI 依赖项的内容。如果您需要 Spring Security Web 身份验证服务和基于 URL 的访问控制,那么就需要它。主包是 org.springframework.security.web。
Dependency | Version | Description |
---|---|---|
spring-security-core | ||
spring-web | 使用 HTTP 远程处理支持的客户端所必需的。Required for clients that use HTTP remoting support. | |
spring-jdbc | 基于 JDBC 的持久记忆令牌存储库所需的(可选)。Required for a JDBC-based persistent remember-me token repository (optional). | |
spring-tx | 基于 JDBC 的持久记忆令牌存储库所需的(可选)。Required by remember-me persistent token repository implementations (optional). |
Config — spring-security-config.jar
此模块包含security 命名空间解析代码和 Java 配置代码。如果使用 Spring Security XML 命名空间进行配置或 SpringSecurity 的 Java 配置支持,则需要它。主包是 org.springframework.security.config。没有一个类打算在应用程序中直接使用。
Dependency | Version | Description |
---|---|---|
spring-security-core | ||
spring-security-web | 如果使用任何与 Web 相关的名称空间配置,则必需(可选)。Required if you are using any web-related namespace configuration (optional). | |
spring-security-ldap | 如果使用 LDAP 命名空间选项,则必需(可选)。Required if you are using the LDAP namespace options (optional). | |
aspectjweaver | 1.6.10 | 如果使用 protected-pointcut 命名空间语法则必需(可选)。Required if using the protect-pointcut namespace syntax (optional). |
LDAP — spring-security-ldap.jar
该模块提供 LDAP 身份验证和供应代码。如果需要使用 LDAP 身份验证或管理 LDAP 用户条目,则需要使用这种方法。顶级包是 org.springframework.security.ldap。
Dependency | Version | Description |
---|---|---|
spring-security-core | ||
spring-ldap-core | 1.3.0 | LDAP 支持基于 SpringLDAP。LDAP support is based on Spring LDAP. |
spring-tx | 数据异常类是必需的。Data exception classes are required. | |
apache-ds | 1.5.5 | 使用嵌入式 LDAP 服务器时必需的(可选)。Required if you are using an embedded LDAP server (optional). If you use apache-ds , the apacheds-core , apacheds-core-entry , apacheds-protocol-shared , apacheds-protocol-ldap and apacheds-server-jndi modules are required. |
shared-ldap | 0.9.15 | 使用嵌入式 LDAP 服务器时必需的(可选)。Required if you are using an embedded LDAP server (optional). |
ldapsdk | 4.1 | Mozilla LdapSDK。如果您使用 OpenLDAP 的密码策略功能,例如,用于解码 LDAP 密码策略控件。Mozilla LdapSDK. Used for decoding LDAP password policy controls if you are using password-policy functionality with OpenLDAP, for example. |
OAuth 2.0 Core — spring-security-oauth2-core.jar
Spring-Security-oauth2-client.jar 包含 Spring Security 对 OAuth 2.0 Authorization Framework 和 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 Authorization Framework 和 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,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 Resource Servers 的支持。它通过使用 OAuth 2.0 Bearer Token 来保护 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 缓存实现,则为必需(如果使用自己的实现,则为可选)。Required if the Ehcache-based ACL cache implementation is used (optional if you use your own implementation). |
spring-jdbc | 如果使用默认的基于 JDBC 的 AclService,则必需(如果实现自己的 AclService,则可选)。Required if you are using the default JDBC-based AclService (optional if you implement your own). | |
spring-tx | 如果使用默认的基于 JDBC 的 AclService,则必需(如果实现自己的 AclService,则可选)。Required if you are using the default JDBC-based AclService (optional if you implement your own). |
CAS — spring-security-cas.jar
此模块包含 SpringSecurity 的 CAS 客户端集成。如果您想在 CAS 单点登录服务器上使用 Spring Security web 身份验证,那么应该使用它。顶级包是 org.springframework.security.cas。
Dependency | Version | Description |
---|---|---|
spring-security-core | ||
spring-security-web | ||
cas-client-core | 3.1.12 | JA-SIG CAS 客户端。这是 Spring 安全集成的基础。The JA-SIG CAS Client. This is the basis of the Spring Security integration. |
ehcache | 1.6.2 | 如果使用基于 Ehcache 的凭证缓存,则必需(可选)。Required if you are using the Ehcache-based ticket cache (optional). |
Test — spring-security-test.jar
此模块包含对 SpringSecurity 测试的支持。
Taglibs — spring-security-taglibs.jar
提供 SpringSecurity 的 JSP 标记实现。
Dependency | Version | Description |
---|---|---|
spring-security-core | ||
spring-security-web | ||
spring-security-acl | 如果使用 ACL (可选)访问控制列表标记或 hasPermission ()表达式,则必需。Required if you are using the accesscontrollist tag or hasPermission() expressions with ACLs (optional). | |
spring-expression | 如果在标记访问约束中使用 SPEL 表达式,则必需。Required if you are using SPEL expressions in your tag access constraints. |
示例(Samples)
SpringSecurity 包含许多示例( samples )应用程序。
后续我会根据SpringSecurity官方的示例输出一些教程,希望大家多多点赞关注!