Spring Security入门(2-2)Spring Security 的运行原理 2

Java配置和表单登录

因此使用Java代码配置Spring Security主要是这两个步骤:
1、创建过滤器
2、注册过滤器。

1.创建过滤器
这段配置创建一个Servlet Filter:springSecurityFilterChain,其负责应用中的所有安全,
包括:
保护应用的URLS,
验证提交的username和password,
重定向到登录页面等。

通过以下代码可以看到使用Java配置Spring Security的基础案例:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
}
}

方法名 configureGlobal是无关紧要的,
重要的是在一个添加了 @EnableWebSecurity注解的类里面,注入 AuthenticationManagerBuilder。
这段代码内容很少,但事实上已经做了很多的默认安全验证,包括:
1、访问应用中的每个URL都需要进行验证
2、生成一个登陆表单
3、允许用户使用username和password来登陆
4、允许用户注销
5、CSRF攻击拦截
6、 Session Fixation攻击
7、 安全Header集成

1. [email protected]
当我们在任意一个类上添加了一个注解@EnableWebSecurity,就可以创建一个名为 springSecurityFilterChain 的Filter。
我们是在一个自定义的SecurityConfig类上加了这个注解。
SecurityConfig类同时也继承了WebSecurityConfigurerAdapter类,
不过需要注意的是,这个过滤器的创建是通过@EnableWebSecurity完成的,与是否继承这个类无关.

实现EnableWebSecurity的源码中加上了@Configuration、@EnableGlobalAuthentication、@Import三个注解,
所以使用@EnableWebSecurity就相当于同时加上了这三个注解。

总结:
@EnableWebSecurity的作用实际上是,创建一个Spring Bean,Bean的类型是Filter,名字为springSecurityFilterChain。
只要我们保证自定义的SecuirtyConfig类,可以被Spring扫描到,就可以帮助我们创建这个Filter了。

1.2 springSecurityFilterChain 过滤器的类型是什么
Filter的创建是通过WebSecurity对象的build方法完成的,
WebSecurity由WebSecurityConfiguration创建,
而WebSecurity的作用是用于创建一个类型为FilterChainProxy的过滤器,
FilterChainProxy是Filter的子类,
我们所说的创建一个名字为springSecurityFilterChain的过滤器,
实际上过滤器的具体类型就是FilterChainProxy

2.注册过滤器
下一步是注册springSecurityFilterChain。这个可以借助Spring3.1引入的WebApplicationInitializer完成。
SpringSecurity提供了一个基类 AbstractSecurityWebApplicationInitializer来确保 springSecurityFilterChain被注册。

项目中已经使用了SpringMvc
如果在我们的应用程序中已经使用了Spring,那么在我们的应用中可能已经有了一个 WebApplicationInitializer来加载我们的配置,
如果我们还使用之前的代码,将会出现一个错误。
此时我们应该在已经存在的ApplicationContext中注册Spring Security。
例如,如果我们已经使用SpringMvc,那么我们的代码应该是如下所示:

import org.springframework.security.web.context.*;
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}

时间: 2024-12-17 10:41:52

Spring Security入门(2-2)Spring Security 的运行原理 2的相关文章

《深入实践Spring Boot》第1章 Spring Boot入门

目录 第1章 Spring Boot入门 1.1 配置开发环境 1.1.1 安装JDK 1.1.2 安装InterlliJ IDEA 1.1.3 安装Apache Maven 1.1.4 安装Git客户端 1.2 创建项目工程 1.2.1 使用Maven新建项目 1.2.2 使用Spring Initializr新建项目 1.3 使用Spring Boot 1.3.1 Maven依赖管理 1.3.2 一个简单的实例 1.4 运行与发布 1.4.1 在IDEA环境中运行 1.4.2 将应用打包发布

Spring Security入门

Spring Security入门: http://www.mossle.com/docs/auth/html/index.html Spring Security 默认的过滤器链 https://blog.csdn.net/u013421749/article/details/78626275 原文地址:https://www.cnblogs.com/aligege/p/9396278.html

Spring Security 入门(三)

在说完了Spring Security框架的功能和执行流程后,就到了写它Spring Boot的集成,先来看最简的配置: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> </parent>

Spring Security 入门(二)

Spring Security 入门(一)中说到,Spring Security执行流程第一步是容器启动时加载系统资源与权限列表,第二步是WEB容器启动时加载拦截器链,并介绍了自定义拦截器的方法.接下来第三步步就是用户登录.介绍下用户登录的流程: 获取用户名和密码,并放入一个 UsernamePasswordAuthenticationToken 实例中(Authentication接口的一个实例); 这个token被传递到一个 AuthenticationManager 实例中进行验证; 若验

Spring Security 入门原理及实战

参考博客: https://www.cnblogs.com/demingblog/p/10874753.html Spring Security 是spring项目之中的一个安全模块,可以非常方便与spring项目无缝集成. 特别是在spring boot项目中加入spring security更是十分简单, 这里就简单介绍一下入门案例和使用原理吧! 写一个简单的springboot测试例子: @Controller public class AppController { @RequestMa

Spring Security 入门(一)

当你看到这篇文章时,我猜你肯定是碰到令人苦恼的问题了,我希望本文能让你有所收获. 本人几个月前还是 Spring 小白,几个月走来,看了 Spring,Spring boot,到这次的 Spring Security. 为了避免大家踩坑,本人将入门的经验传授给那些和我一样正在学习 Spring Security 的小白. 我们从官方例子学习起: 1.我们先来创建一个 Spring Boot 的项目 HelloWorld: 我用的开发工具是 eclipse,如果没装 STS 的话,请点击 Help

Spring Security入门Demo

一.spring Security简介 SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架.它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权.在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术. 二.建立工程 参考http://blog.csdn.net/haishu_zheng/article/details/51490

Spring Security 入门(1-14)Spring Security 开发指南(转)

开发指南:http://www.cnblogs.com/xingxueliao/p/5911292.html Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际上分为: 授权服务 Authorization Service. 资源服务 Resource Service. 虽然这两个提供者有时候可能存在同一个应用程序中,但在Spring Security OAuth中你可以把 他它们各自放在不同的应用上,而且你可以有多个资源服务,它们共享同一个中央授权服 务

Spring Security入门(3-5)Spring Security 的鉴权 - 决策管理器和投票器

1.决策管理器的运行原理: 2.Spring Security提供的决策管理器实现 3.用户自定义的决策管理器

Spring Security 入门(1-12)Spring Security - remember me!

Remember-Me 功能 概述 Remember-Me 是指网站能够在 Session 之间记住登录用户的身份,具体来说就是我成功认证一次之后在一定的时间内我可以不用再输入用户名和密码进行登录了,系统会自动给我登录.这通常是通过服务端发送一个 cookie 给客户端浏览器,下次浏览器再访问服务端时服务端能够自动检测客户端的 cookie,根据 cookie 值触发自动登录操作.Spring Security 为这些操作的发生提供必要的钩子,并且针对于 Remember-Me 功能有两种实现.