SpringSecurity认证授权

本文详细介绍了SpringSecurity的工作原理,包括其基本工作流程、核心认证流程及各组件如UsernamePasswordAuthenticationFilter、AuthenticationManager和UserDetailsService的作用。SpringSecurity提供身份验证、授权、Web安全等功能,简化安全开发并保护应用程序免受攻击。
摘要由CSDN通过智能技术生成

        Spring Security的基本工作流程。通过配置和组合不同的过滤器、认证提供者、访问规则等,可以灵活地实现各种身份验证和授权策略,以满足应用程序的安全需求。

UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了用户名密码后的登陆请求。基本案例的认证工作主要有它负责


ExceptionTranslationFilter:处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException


FilterSecurityInterceptor:负责权限校验的过滤器


可以通过Debug查看SpingSecurity过滤器链中有哪些过滤器以及它们的先后顺序

认证流程

认证流程中的核心类

  Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息
    AuthenticationManager接口:定义了认证Authentication的方法
    UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法
    UserDetails接口:提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装成UserDetails对象返回。然后将这些信息封装到Authentication对象中
    UsernamePasswordAuthenticationFilter实现类:实现了我们最常用的基于用户名和密码的认证逻辑,封装Authentication对象
    DaoAuthenticationProvider实现类:是AuthenticationManager中管理的其中一个Provider,因为是要访问数据库,所以叫Dao

准备

        利用idea生成一个SpringBoot工程,然后加入Spring web、SpringSecurity依赖即可,直接以Debug模式启动启动类,并在下图中打入断点

1.用浏览器登录提交用户名与密码

通过浏览器提交用户名密码

2.默认的登录是用UsernamepasswordAuthencitionFilter过滤器去拦截

通过Authentication接口的实现子类UsernamePasswordAuthenticationToken封装Authentication对象,这里只有用户名和密码,还没有权限

3.调用AuthenticationManager的authenticate方法进行认证

因为AuthenticationManager中管理了一群Provider,所以调用的就是那一群Provider的authenticate方法进行认证

调用DaoAuthenticationProvider的authenticate方法进行认证

4.获得DaoAuthenticationProvider的UserDetailService对象,再调用此对象的loadUserByUsername方法查询用户信息

总体

        Spring Security是一个强大且高度可定制的身份验证和访问控制框架,用于Java应用程序的安全保护。它提供了诸多功能和特性,包括身份验证、授权、Web安全、与框架的集成以及定制扩展等。

通过Spring Security,开发者可以轻松地实现以下功能:

  • 身份验证:支持多种身份验证机制,如用户名/密码、令牌、OAuth等,并与各种认证提供者无缝集成。
  • 授权:提供细粒度的授权能力,基于角色、权限或其他属性来控制对资源的访问。
  • Web安全:内置保护机制,用于防御常见的Web应用程序漏洞,如CSRF、XSS、点击劫持等,以及处理用户会话和安全通信。
  • 与框架的集成:方便地与Spring框架的各个模块(如Spring MVC、Spring Boot、Spring Cloud)进行集成。
  • 定制扩展性:采用模块化的架构,提供了丰富的扩展点和配置选项,使开发者能够根据需求自定义和扩展框架行为。

总体而言,Spring Security帮助开发者简化了应用程序的安全开发流程,提供了一套完整的安全解决方案,从而保护应用程序免受未经授权的访问和常见的安全漏洞。它是Java生态系统中非常受欢迎的安全框架之一,被广泛应用于各种类型的项目,确保应用程序的安全性和可靠性。

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值