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

前言

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

正文

①WebAsyncManagerIntegrationFilter过滤器

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

② SecurityContextPersistenceFilter过滤器

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

③ HeaderWriterFilter过滤器

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

CorsFilter过滤器

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

⑤ LogoutFilter过滤器

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

⑥ UsernamePasswordAuthenticationFilter过滤器

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

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

⑦ ConcurrentSessionFilter过滤器

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

 ⑧BasicAuthenticationFilter过滤器

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

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

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

⑨ RequestCacheAwareFilter过滤器

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

⑩ SecurityContextHolderAwareRequestFilter过滤器

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

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

AnonymousAuthenticationFilter过滤器

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

SessionManagementFilter过滤器

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

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

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

ExceptionTranslationFilter过滤器

- 用于处理AccessDeniedException和 AuthenticationException异常。

⑭ FilterSecurityInterceptor过滤器

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

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

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

结语

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

  • 35
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厉害哥哥吖

您的支持是我创作下去的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值