SpringSecurity 模块介绍

324 阅读3分钟

在前面几节我们一直在顶层使用SpringSecurity,特别是在SpringBoot中应用SpringSecurity,很多特性都封装好了,内部是什么样子的我们并不知道,当出现问题时,作为开发人员我们无法排查的,为此我们需要了解SpringSecurity中具体有哪些模块,以及各个模块的作用。后面我们开始进入SpringSecurity内部来一探究竟。

在Spring Security 3.0中,代码库被细分为单独的jar,这些jar更清楚地区分了不同的功能区域和第三方依赖关系。如果使用Maven构建项目,那么应该将这些模块添加到pom.xml中。即使您不使用Maven,我们也建议您参考pom.xml文件,以了解第三方依赖关系和版本。另一种方式是检查样例应用程序中包含的库。

1. Core — spring-security-core.jar

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

  • org.springframework.security.core
  • org.springframework.security.access
  • org.springframework.security.authentication
  • org.springframework.security.provisioning

2. Remoting — spring-security-remoting.jar

该模块提供了与Spring Remoting的集成。除非你正在编写一个使用Spring Remoting的远程客户端,否则你不需要它。主包是org.springframework.security.remoting

3. Web — spring-security-web.jar

这个模块包含过滤器和相关的web安全基础设施代码。它包含任何与servlet API相关的内容。如果您需要Spring Security web身份验证服务和基于URL的访问控制就需要它。主包是org.springframework.security.web

4. Config — spring-security-config.jar

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

5. LDAP — spring-security-ldap.jar

提供LDAP认证和配置代码。当需要使用LDAP认证或管理LDAP用户条目时必选。顶层包是org.springframework.security.ldap

6. OAuth 2.0 Core — spring-security-oauth2-core.jar

spring-security-oauth2-core.jar包含支持OAuth 2.0授权框架和OpenID Connect Core 1.0的核心类和接口。使用OAuth 2.0OpenID Connect Core 1.0的应用程序,如客户端、资源服务器和授权服务器,都需要它。顶层包是org.springframework.security.oauth2.core

7. 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登录或OAuth客户端支持的应用程序需要它。顶层包是org.springframework.security.oauth2.client

8. 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

9. 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承载令牌来保护APIs。顶层包是org.springframework.security.oauth2.server.resource

10. ACL — spring-security-acl.jar

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

11. CAS — spring-security-cas.jar

此模块包含 Spring Security 的CAS客户端集成。如果您想使用带有CAS单点登录服务器的 Spring Security Web 身份验证,那么您应该使用它。顶层包是org.springframework.security.cas

12. OpenID — spring-security-openid.jar

此模块包含OpenID web身份验证支持。它用于根据外部OpenID服务器对用户进行身份验证。顶层包是org.springframework.security.openid。它需要OpenID4Java

13. Test — spring-security-test.jar

这个模块包含了对 Spring Security 测试的支持。