在前面几节我们一直在顶层使用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.0
或OpenID 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 测试的支持。