![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Security
文章平均质量分 73
Spring Security
这是一条海鱼
这个作者很懒,什么都没留下…
展开
-
Spring Security核心组件之安全上下文
1、安全上下文Spring Security使用接口SecurityContext抽象建模"安全上下文"这一概念。这里安全上下文SecurityContext指的是当前执行线程使用的最少量的安全信息(其实就是用于代表访问者账号的有关信息)。public interface SecurityContext extends Serializable { Authentication getAuthentication(); void setAuthentication(Authentication au原创 2022-01-03 19:24:43 · 4152 阅读 · 0 评论 -
SpringSecurity过滤器ExceptionTranslationFilter
1、ExceptionTranslationFilterExceptionTranslationFilter异常转换器位于整个springSecurityFilterChain的后方 ,用来转换整个链路中出现的异常。此过滤器本身不处理异常。而是将认证过程中出现的异常交给 内部维护的一些类去处理,一般处理两大异常:AccessDeniedException授权异常和AuthenticationException认证异常public class ExceptionTranslationFilter ext原创 2022-01-03 00:29:32 · 755 阅读 · 0 评论 -
SpringSecurity过滤器LogoutFilter
public class LogoutFilter extends GenericFilterBean { private RequestMatcher logoutRequestMatcher;//退出接口匹配器 private final LogoutHandler handler;//退出资源清除器 private final LogoutSuccessHandler logoutSuccessHandler;//退出成功后,要做的操作 public LogoutFilter(Logo原创 2022-01-03 00:28:48 · 758 阅读 · 0 评论 -
SpringSecurity过滤器CsrfFilter
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国原创 2022-01-03 00:27:51 · 1474 阅读 · 0 评论 -
SpringSecurity过滤器SecurityContextPersistenceFilter
SecurityContextPersistenceFilter是承接容器的session与spring security的重要filter,主要工作是从session中获取SecurityContext,然后放到上下文中,之后的filter大多依赖这个来获取登录态。其主要是通过HttpSessionSecurityContextRepository来存取的。public class SecurityContextPersistenceFilter extends GenericFilterBean {原创 2022-01-03 00:26:54 · 2840 阅读 · 0 评论 -
SpringSecurity过滤器WebAsyncManagerIntegrationFilter
原文地址我们从ThreadLocal讲起,ThreadLocal可以理解为一个与当前线程绑定的Map, key是当前线程,value是要存储的object。当我们在同一个线程中,可以通过get()方法获取到value。如果在A线程set(object),然后在B线程中调用get(),由于线程已切换,key是A,拿B自然取不出key为A的value。对于一个SSO系统,我们常常把当前登录的用户相关信息放到ThreadLocal中,避免每次使用的时候都去调RPC接口或者DB接口去查询。Spring Secu原创 2022-01-02 00:55:25 · 427 阅读 · 0 评论 -
SpringSecurity过滤器UsernamePasswordAuthenticationFilter
简介UsernamePasswordAuthenticationFilter是AbstractAuthenticationProcessingFilter针对使用用户名和密码进行身份认证而定制化的一个过滤器。其添加是在调用http.formLogin()时作用,默认的登录请求pattern为"/login",并且为POST请求。当我们登录的时候,也就是匹配到loginProcessingUrl,这个过滤器就会委托认证管理器authenticationManager来验证登录登陆流程入口是Abstrac原创 2022-01-01 23:13:51 · 4861 阅读 · 0 评论 -
Spring Security核心组件之授权
Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Security 提供的方式做授权,也可以自定义授权逻辑。一句话,你想怎么玩都可以!一、 URL层面的授权1.1 访问控制url的匹配在配置类中http.authorizeRequests()主要是对url进行控制。配置顺序会影响之后授权的效果,越是具体的应该放在前面,越是笼统的应该放到后面。anyRequ原创 2022-01-01 22:57:57 · 3887 阅读 · 0 评论 -
Spring Security简介
简介Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring Security主要实现了Authentication(认证,解决who are you?)和AccessControl(访问控制,也就是what are you allowed to do?,也称Authorization)。Spring Security在架构上将认证与授权分离,并提供了扩展点。在Java生态中,目前有Spring Security和Apache S原创 2021-12-16 16:00:41 · 983 阅读 · 0 评论 -
SpringSecurity源码学习之过滤器的创建
本文是基于springboot的web项目,所以它的容器是AnnotationConfigServletWebServerApplicationContextDelegatingFilterProxy的注册是发生其onRefresh()方法中,其onRefresh方法实现在其父类ServletWebServerApplicationContext中public class ServletWebServerApplicationContext extends GenericWebApplicationCo原创 2021-10-07 01:10:03 · 179 阅读 · 0 评论 -
Spring Security源码学习——用户配置器
2.1 UserDetailsAwareConfigurer这个配置类看名字大概就知道这是用来配置用户类的。public abstract class UserDetailsAwareConfigurer<B extends ProviderManagerBuilder<B>, U extends UserDetailsService> extends SecurityConfigurerAdapter<AuthenticationManager, B> {原创 2021-10-07 01:08:11 · 135 阅读 · 0 评论 -
Spring Security源码学习——全局配置器
SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。所以我们今天有必要来跟大家把 SecurityConfigurer 从头到尾捋一捋。SecurityConfigurer 本身是一个接口,我们来看下:public interface SecurityCo原创 2021-10-05 01:47:54 · 480 阅读 · 0 评论 -
Spring Security源码学习——请求配置器
前言SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。public interface SecurityConfigurer<O, B extends SecurityBuilder<O>> { //一个初始化方法 void原创 2021-10-05 00:36:11 · 318 阅读 · 0 评论 -
Spring Security源码学习——配置器之WebSecurityConfigurer
前言SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。public interface SecurityConfigurer<O, B extends SecurityBuilder<O>> { //一个初始化方法 void原创 2021-10-05 00:13:04 · 1728 阅读 · 0 评论 -
Spring Security核心组件之认证
一、权限GrantedAuthority是Spring Security对权限概览的抽象public interface GrantedAuthority extends Serializable { String getAuthority();// 获取权限标识, 注意这里是String 字符串}GrantedAuthority 代表了 ‘权限’ ,其实就是一种标识, 这个标识代表了某种权限, 如 管理员角色权限, 普通用户角色权限等, 依赖的是角色标识;GrantedAuthorit原创 2021-09-28 15:13:18 · 228 阅读 · 0 评论 -
Spring Security核心组件之用户
一、用户public interface UserDetails extends Serializable { Collection<? extends GrantedAuthority> getAuthorities(); // 上文中已经分析, 权限标识集合 String getPassword(); // 密码 String getUsername(); // 用户名 boolean isAccountNonExpired(); // 是否未过期 boole原创 2021-09-28 09:02:13 · 194 阅读 · 0 评论 -
SpringSecurity过滤器执行过程
一、过滤器Filter基本知识过滤器Filter就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。简单来说,过滤器就相当于是一个滤纸用来过滤条件的~~public interface Filter { //这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。 //在这个方法中可以读取web.xml 文件中Servlet过滤器的初始化参数 public default v原创 2021-09-27 14:33:14 · 1486 阅读 · 0 评论 -
Spring Security源码学习——建造者之WebSecurity
二、WebSecurityWebSecurity 的目标是构建 FilterChainProxy 对象,即构建核心过滤器 springSecurityFilterChain主要关注由 AbstractConfiguredSecurityBuilder 继承下来的方法实现 performBuild()public final class WebSecurity extends AbstractConfiguredSecurityBuilder<Filter, WebSecurity&g原创 2021-09-18 15:00:18 · 200 阅读 · 0 评论 -
Spring Security源码学习——建造者之HttpSecurity
三、HttpSecurity它的目标是构建一个 SecurityFilterChain 过滤器链实例,它 掌握着所有Filter的“生杀大权”,想要谁过滤就配置起来,不想要谁过滤就不配置或者禁用掉(因为有些会被默认配置)。大致可以将其内方法分为两大类型,一类是框架默认给开发者提供的认证配置方法,可供开发者选择性调用,比如:3.1 认证配置方法formLogin指定支持 基于表单 的身份验证public final class HttpSecurity ...//忽略代码...{原创 2021-09-18 14:29:09 · 526 阅读 · 0 评论 -
Spring Security源码学习——建造者之AuthenticationManagerBuilder
前言AuthenticationManager 规范了 Spring Security 的过滤器要如何执行身份认证器,并在身份认证器成功后返回一个经过认证的 Authentication 对象。AuthenticationManager 是一个接口,我们可以自定义它的实现,但是通常我们使用更多的是系统提供的 ProviderManager。...原创 2021-09-18 10:03:00 · 716 阅读 · 0 评论 -
Spring Security源码学习——建造者基础架构
参考文章Spring Security源码(一):整体框架设计前言Spring Security整个框架的核心就是构建一个名字为 springSecurityFilterChain 的过滤器Bean,它的类型是 FilterChainProxy它整个框架主要由 建造者 和 配置器 构成,在服务启动时就是 通过配置器对建造者进行配置 ,配置完成再由建造者创建出核心过滤。本文主要讲的就是他的建造者建造者的顶级接口是整体SecurityBuilder,而他的基本架构实现是AbstractConfigu原创 2021-09-14 16:10:41 · 239 阅读 · 0 评论 -
SpringSecurity源码学习之SpringSecurity相关配置类的读取
SpringSecurity 初始化流程源码本篇主要讲解 SpringSecurity初始化流程的源码部分,包括核心的 springSecurityFilterChain 是如何创建的,以及在介绍哪里可以扩展个性化的配置,SpringSecurity源码其实是蛮难得 各种Builder Configure 看得真的头疼...原创 2021-09-12 15:14:43 · 410 阅读 · 0 评论