(十五)springboot实战——spring securtity的核心过滤器介绍

前言

本节内容主要介绍spring securtity安全框架的一些核心过滤器及其作用,我们都清楚spring securtity安全框架底层是基于filter过滤器实现的,采用的是责任链的设计模式,它有一条很长的过滤器链。本次spring securtity原理介绍使用的版本是5.6.8,不同版本之间可能略有差异。

(十五)springboot实战——spring securtity的核心过滤器介绍_第1张图片

正文

①WebAsyncManagerIntegrationFilter过滤器

- 将Security上下文与 Spring Web 中用于处理异步请求映射的WebAsyncManager进行集成,用于集成 Web 异步管理器。主要是创建和初始化异步请求上下文,在请求处理完成之后,清理异步请求上下文,释放资源,处理异步请求期间可能出现的异常情况,确保异步请求的稳定性和可靠性。

② SecurityContextPersistenceFilter过滤器

- 在 Web 应用程序中,当用户进行登录认证成功后,Spring Security会创建一个包含用户身份认证信息的安全上下文(SecurityContext),通常存储在 HttpSession 中。在每次 HTTP 请求到达时,检查并尝试从适当的存储位置(通常是 HttpSession)中加载安全上下文信息,将加载的安全上下文信息存储到当前的SecurityContextHolder中,以便后续的安全验证和授权处理。在 HTTP 请求处理完成之后,将更新后的安全上下文信息重新存储到适当的位置,确保安全上下文信息在不同请求之间的持久化和恢复。

(十五)springboot实战——spring securtity的核心过滤器介绍_第2张图片

③ HeaderWriterFilter过滤器

- HeaderWriterFilter"是 Spring Security 中的一个过滤器,用于向 HTTP 响应的头部添加特定的安全标头(Security Headers),增强 Web 应用程序的安全性。

(十五)springboot实战——spring securtity的核心过滤器介绍_第3张图片

CorsFilter过滤器

- CorsFilter是Spring Security中的一个过滤器,用于防止跨站请求伪造(CSRF)攻击。会在用户登录后,为用户生成一个唯一的 CSRF 令牌,并将其存储在用户的会话中。

(十五)springboot实战——spring securtity的核心过滤器介绍_第4张图片

⑤ LogoutFilter过滤器

- 用于处理退出登录,默认匹配/logout路径,可以在SecurityFilterChain中配置

(十五)springboot实战——spring securtity的核心过滤器介绍_第5张图片

⑥ UsernamePasswordAuthenticationFilter过滤器

- 用于处理表单认证的登录请求,从表单中获取用户名和密码,封装为UsernamePasswordAuthenticationToken对象

。默认是处理post请求下的/login,其它请求不会处理,并会直接放行

(十五)springboot实战——spring securtity的核心过滤器介绍_第6张图片

⑦ ConcurrentSessionFilter过滤器

-ConcurrentSessionFilter"是Spring Security中的一个过滤器,用于处理并发会话控制。如果一个用户在同一时间内多次登录到系统,可能会导致安全问题和数据不一致性。为了解决这个问题,Spring Security 提供了ConcurrentSessionFilter来实现并发会话控制。ConcurrentSessionFilter在SpringSecurity中用于实现并发会话控制,确保每个用户在同一时间只能有一个有效的会话,从而提高应用程序的安全性。

(十五)springboot实战——spring securtity的核心过滤器介绍_第7张图片

 ⑧BasicAuthenticationFilter过滤器

- 检测和处理http basic认证。BasicAuthenticationFilter 的主要作用是从请求头中提取用户名和密码,并将其与预先配置的用户凭据进行比较,以验证用户的身份。

- 当客户端发送包含基本身份验证凭据的请求时,例如在请求头中添加 "Authorization" 字段,值为 "Basic ,BasicAuthenticationFilter 检测到该请求,并从请求头中提取出凭据信息。

- 将凭据信息与预先配置的用户凭据进行比较,以验证用户的身份。如果验证成功,请求将继续进行处理;如果验证失败,将返回身份验证失败的响应。

(十五)springboot实战——spring securtity的核心过滤器介绍_第8张图片

⑨ RequestCacheAwareFilter过滤器

- RequestCacheAwareFilter 就是负责管理重定向功能的过滤器。它会在用户请求被拦截并需要进行身份验证时,缓存用户请求的URL信息。当用户通过身份验证并进行重定向到原始请求页面时,RequestCacheAwareFilter 会使用缓存的 URL 信息来确保用户能够正确地返回到原始请求页面。

(十五)springboot实战——spring securtity的核心过滤器介绍_第9张图片

⑩ SecurityContextHolderAwareRequestFilter过滤器

- 它用于将安全上下文信息传递给 HttpServletRequest 对象,以便在请求处理过程中能够方便地获取和操作安全上下文信息。

- 在请求处理过程中,将当前用户的安全信息(如认证信息、授权信息等)从 SecurityContextHolder中提取出来,并将其设置到 HttpServletRequest 对象的属性中,以便在控制器或其他组件中可以轻松地访问这些安全信息。

(十五)springboot实战——spring securtity的核心过滤器介绍_第10张图片

AnonymousAuthenticationFilter过滤器

- AnonymousAuthenticationFilter"是 Spring Security中的一个过滤器,用于在用户尚未进行认证时创建一个匿名身份进行代替。这样即使用户尚未登录,系统也可以根据匿名身份进行相应的访问控制。

(十五)springboot实战——spring securtity的核心过滤器介绍_第11张图片

SessionManagementFilter过滤器

- 当用户进行身份验证成功后,SessionManagementFilter负责创建新的会话,并将用户的安全上下文信息存储在会话中。

- 当会话因为超时、用户退出登录或其他原因而失效时,SessionManagementFilter负责处理该情况,例如清除会话中的安全上下文信息、执行特定的操作或重定向到登录页面等。

- SessionManagementFilter可以控制并发会话的数量,限制同一用户在多个设备或浏览器上同时存在的会话数量,以提高应用程序的安全性。

(十五)springboot实战——spring securtity的核心过滤器介绍_第12张图片

ExceptionTranslationFilter过滤器

- 用于处理AccessDeniedException和 AuthenticationException异常。

(十五)springboot实战——spring securtity的核心过滤器介绍_第13张图片

⑭ FilterSecurityInterceptor过滤器

- FilterSecurityInterceptor是 pring Security 提供的核心过滤器之一,它在请求到达应用程序之前拦截并进行安全检查。其主要功能是根据配置的访问规则(如角色、权限等)对请求进行授权验证,决定是否允许用户继续执行该请求。

- 在处理请求时,FilterSecurityInterceptor 将会检查用户的身份认证情况以及用户所具有的角色和权限,并根据配置的访问规则进行匹配和验证。如果请求满足了访问规则,则允许用户继续执行请求;否则,将返回相应的错误信息或采取其他措施(如跳转到登录页面、拒绝访问等)。

- 通过配置FilterSecurityInterceptor,可以指定访问规则、配置访问权限、自定义错误处理等。这样可以保护您的应用程序免受未经授权的访问和攻击

(十五)springboot实战——spring securtity的核心过滤器介绍_第14张图片

结语

关于spring securtity的核心过滤器介绍内容到这里就结束了,我们下期见。。。。。。

你可能感兴趣的:(#,springboot,spring,boot)