Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements
Features
Comprehensive and extensible support for both Authentication and Authorization
Protection against attacks like session fixation, clickjacking, cross site request forgery, etc
Servlet API integration
Optional integration with Spring Web MVC
核心类简介
Authentication
Authentication 是一个接口,用来表示用户认证信息的,在用户登录认证之前相关信息会封装为一个 Authentication 具体实现类的对象,在登录认证成功之后又会生成一个信息更全面,包含用户权限等信息的 Authentication 对象,然后把它保存在 SecurityContextHolder 所持有的 SecurityContext 中,供后续的程序进行调用,如访问权限的鉴定等。
SecurityContextHolder
SecurityContextHolder 是用来保存 SecurityContext 的。SecurityContext 中含有当前正在访问系统的用户的详细信息。默认情况下,SecurityContextHolder 将使用 ThreadLocal 来保存 SecurityContext,这也就意味着在处于同一线程中的方法中我们可以从 ThreadLocal 中获取到当前的 SecurityContext。因为线程池的原因,如果我们每次在请求完成后都将 ThreadLocal 进行清除的话,那么我们把 SecurityContext 存放在 ThreadLocal 中还是比较安全的。这些工作 Spring Security 已经自动为我们做了,即在每一次 request 结束后都将清除当前线程的 ThreadLocal。
SecurityContextHolder 中定义了一系列的静态方法,而这些静态方法内部逻辑基本上都是通过 SecurityContextHolder 持有的 SecurityContextHolderStrategy 来实现的,如 getContext()、setContext()、clearContext()等。而默认使用的 strategy 就是基于 ThreadLocal 的 ThreadLocalSecurityContextHolderStrategy。另外,Spring Security 还提供了两种类型的 strategy 实现,GlobalSecurityContextHolderStrategy 和 InheritableThreadLocalSecurityContextHolderStrategy,前者表示全局使用同一个 SecurityContext,如 C/S 结构的客户端;后者使用 InheritableThreadLocal 来存放 SecurityContext,即子线程可以使用父线程中存放的变量。
相关推荐
**Spring Security简介** Spring Security是Java领域中一个强大的安全框架,用于处理Web应用程序的安全性问题。它提供了一套全面的解决方案,包括身份验证、授权、会话管理以及防止常见的攻击,如跨站脚本(XSS)、...
1. **SpringSecurity简介**:首先会介绍SpringSecurity的基本概念和架构,包括它如何通过层层过滤器保护Web应用,以及它提供的主要组件如Authentication(认证)和Authorization(授权)。 2. **配置SpringSecurity...
1. Spring Security简介: Spring Security是一个为基于Spring的应用程序提供声明式安全机制的框架。它最初是Acegi Security System for Spring的一个后继产品,提供了身份验证和授权机制,可以应用于Web层、方法层...
24.1. Spring Security简介 Spring Security 2.0不仅提供了更加简洁的配置,还引入了许多新特性,如OpenID支持、NTLM单点登录、JSR 250安全注解、RESTful Web请求授权等。在处理与数据库交互方面,Spring Security...
一、Spring Security简介 Spring Security是Spring生态系统的组成部分,它为Java应用程序提供了全面的安全管理解决方案,包括认证、授权、会话管理以及CSRF防护等。Spring Security 3.1是该框架的一个稳定版本,...
#### 一、Spring Security简介 - **Spring Security**是一种全面的安全服务框架,主要用于基于J2EE的企业应用程序。它与Spring框架紧密结合,旨在简化安全性的实现,使得开发者能够专注于应用程序的核心逻辑。 - *...
1. **Spring Security简介** Spring Security 是Spring生态系统中的一个组件,用于提供认证(Authentication)和授权(Authorization)功能。它为Web应用程序提供了全面的安全解决方案,包括登录、权限控制、会话...
Spring Security 简介 - **Spring Security** 是一个强大的、高度可定制的身份验证和访问控制框架。 - **历史**: 本章节简要回顾了 Spring Security 的发展历程,包括其前身 Acegi 安全框架的历史背景。 - **版本...
Spring Security 实践指南 Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户...
**一、Spring Security简介** Spring Security是一个全面的、高度可配置的安全框架,它提供了认证和授权的功能,可以保护Web应用程序免受各种攻击。在Spring Boot项目中,集成Spring Security可以简化安全配置,只...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...
#### 一、Spring Security简介 Spring Security是Spring家族中的一个子项目,它为Web应用程序提供了全面的安全控制功能,包括认证(Authentication)、授权(Authorization)以及会话管理等。通过Spring Security,...
一、Spring Security简介 Spring Security是Spring生态体系中的一个核心组件,它为Java应用程序提供了灵活且可扩展的安全管理框架。Spring Security的主要目标是使开发者能够轻松地在应用中实现安全性,同时保持高度...
#### 一、Spring Security简介 Spring Security 是一个功能强大的安全框架,它为基于 Java 的应用程序提供了身份验证(authentication)、授权(authorization)、CSRF 保护、登录和注销功能等功能。它能帮助开发者...
Spring Security是一个功能强大、高度定制的安全框架,它专门用于为基于Spring的应用程序提供安全性解决方案。Spring Security架构的设计初衷是为了解决认证和授权的需求,确保应用程序的安全性。它提供了全面的安全...
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...
1. **Spring Security简介** - **历史背景**:Spring Security起源于2003年,最初名为“Acegi Security System for Spring”,简称“Acegi Security”。在Ben Alex的领导下逐渐发展成为一个复杂的认证和访问控制...