项目模块和依赖

本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。

在Spring Security 3.0中,代码库被细分为独立的jar,更明确地将不同的功能区和第三方依赖关系分开。如果你使用Maven构建你的项目,这些是你应该添加到 pom.xml 中的模块。即使你不使用Maven,我们也建议你查阅 pom.xml 文件,了解第三方的依赖和版本情况。另一个好主意是检查示例应用程序中包含的库。

本节提供了Spring Security 中各模块的参考,以及它们在运行中的应用程序中需要的额外依赖。我们不包括那些仅在构建或测试 Spring Security 本身时使用的依赖。我们也不包括外部依赖所要求的过渡性依赖。

项目网站上列出了所需的Spring版本,因此例子中的Spring依赖项省略了具体版本。请注意,实例中列为 “optional” (可选) 的一些依赖项可能仍是Spring应用中其他非security功能所需的。如果大多数应用中都使用了列为 “optional”(可选) 的依赖项,那么在项目的 Maven POM 文件中实际上可能并没有这样标注。它们是 “optional” (可选)的,因为你不需要它们,除非你使用指定的功能。

当一个模块依赖于另一个 Spring Security 模块时,它所依赖的模块的非选择性依赖也被认为是必须的,并且不单独列出。

Core — spring-security-core.jar

该模块包含核心认证和访问控制类和接口、远程支持和基本配置API。任何使用 Spring Security 的应用程序都需要它。它支持独立的应用程序、远程客户端、方法(服务层)安全(Method 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

Method security 是基于Spring AOP的。

spring-beans

Spring 配置所需

spring-expression

基于表达式的method security需要(可选)。

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

该模块包含 security 命名空间解析代码和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

Data exception 类是必须的。

apache-ds

1.5.5

如果你使用嵌入式LDAP服务器,则需要(可选)。如果你使用 apache-ds,需要 apacheds-coreapacheds-core-entryapacheds-protocol-sharedapacheds-protocol-ldap 和 `apacheds-server-jndi`模块。

shared-ldap

0.9.15

如果你使用嵌入式LDAP服务器,则需要(可选)。

ldapsdk

4.1

Mozilla LdapSDK。 用于解码LDAP密码策略控制,如果你使用OpenLDAP的密码策略功能,比如说。

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 Object Signing and Encryption)框架的支持。JOSE框架旨在提供一种方法,在各方之间安全地转移 claim。它是由一系列规范构建的。

  • 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 Bearer Token 来保护API。顶层包是 org.springframework.security.oauth2.server.resource

ACL — spring-security-acl.jar

这个模块包含一个专门的 domain object ACL 实现。它用于在你的应用程序中对特定的 domain object 实例应用安全。顶层包是 org.springframework.security.acls

Table 6. ACL Dependencies
Dependency Version Description

spring-security-core

ehcache

1.6.2

如果使用基于Ehcache的ACL缓存实现,则需要(如果使用自己的实现,则是可选)。

spring-jdbc

如果你使用默认的基于JDBC的AclService,则需要(如果你实现了自己的AclService,则可选)。

spring-tx

如果你使用默认的基于JDBC的AclService,则需要(如果你实现了自己的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测试的支持。

Taglib — spring-security-taglibs.jar

提供 Spring Security 的 JSP 标签实现。

Table 8. Taglib Dependencies
依赖 版本 说明

spring-security-core

spring-security-web

spring-security-acl

如果你使用 accesscontrollist 标签或 hasPermission() 表达式与ACL(可选),则需要。

spring-expression

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