SpringSecurity认证流程(超级详细)

这篇具有很好参考价值的文章主要介绍了SpringSecurity认证流程(超级详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 .前言

最近开发项目的时候遇到了和SpringSecurity相关的一些问题,但是之前并没有去了解过SpringSecurity,导致改系统安全权限验证的时候就比较吃力了,目前项目开发大多都直接用脚手架直接开发,系统安全权限验证已经形成了,所以并不是自己写的,自己理解起来会更慢一些,所以这篇文章就是为了分析SpringSecurity的认证流程而写的

2 .本质

SpringSecurity的本质就是一个过滤器链,内部包含了提供各种功能的过滤器,基本案例中的过滤器链如下图所示:

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

 上图中仅展示了部分核心过滤器,非核心过滤器没有显示

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

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

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

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

3.认证流程

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

上面的图所展示的就是整个SpringSecurity的认证流程

认证流程中的核心类

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

准备

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

3.1 第一步

 

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

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

  3.2 第二步

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

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

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

 

 

3.3 第三步

 

调用AuthenticationManager的authenticate方法进行认证

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

调用DaoAuthenticationProvider的authenticate方法进行认证

springsecurity认证流程,spring,java,系统安全,安全,spring boot,spring,springsecurity

 

DaoAuthenticationProvider是AuthenticationProvider接口的其中一个实现类

3.4 第四步

 

调用DaoAuthenticationProvider的authenticate方法进行认证

3.5 第五步

 

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

总结

上面五步就是SpringSecurity的基本认证流程,其实从基本认证流程中不难看出,我们可以重写或者替换UsernamePasswordAuthenticationFilter过滤器,用以添加我们需要的业务处理逻辑,并且可以实现UserDetailsService接口,加入Spring Data JPA或者Mybatis用来访问数据库中的用户信息
 文章来源地址https://www.toymoban.com/news/detail-729596.html

到了这里,关于SpringSecurity认证流程(超级详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3分钟快速了解CCRC认证,以及详细申请流程

    现在市场上信息安全类的资质认证证书主要有很多种,目前发证量最多、应用最广、业内认可度较高主要是ISO27001和中国网络安全审查技术与认证中心CCRC信息安全服务资质认证证书。但是还是有很多人对于CCRC资质认证并没有那么了解,只知其一不知其二,为了方便大家可以深

    2024年02月13日
    浏览(21)
  • 搭建gerrit服务器+LDAP认证+集成gitewb详细流程

    Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统。 本文介绍如何搭建gerrit服务器,以及搭配LDAP认证的

    2024年02月02日
    浏览(32)
  • SpringBoot集成SpringSecurity从0到1搭建权限管理详细过程(认证+授权)

    最近工作需要给一个老系统搭建一套权限管理,选用的安全框架是SpringSecurity,基本上是结合业务从0到1搭建了一套权限管理,然后想着可以将一些核心逻辑抽取出来写一个权限通用Demo,特此记录下。 Spring Security是 Spring家族中的一个安全管理框架。相比与另外一个安全框架

    2024年02月04日
    浏览(30)
  • SpringSecurity入门(超级无敌认真好用,万字收藏篇!!!!)

    本文属于SpringSecurity入门篇,后续学习过程中会持续更新 基于spring的安全框架 什么是安全框架? 解决系统安全问题的框架,如果没有安全框架,我们就需要手动处理每个资源的访问控制,显得非常麻烦。使用安全框架后就可以使用配置的方式对资源进行访问控制。 常见的安全

    2024年02月15日
    浏览(26)
  • SpringSecurity 认证实战

    1.1 添加依赖 1.2 添加Redis相关配置 1.3 工具类 1.4 实体类 1.4 数据库表设计 自定义一个 UserDetailsService 的实现类,让SpringSecurity使用我们的 实现类 。从数据库中查询用户名和密码。 因为 UserDetailsService 方法的返回值是 UserDetails 类型,所以需要定义一个类,实现该接口,把用户信

    2024年02月07日
    浏览(27)
  • SpringSecurity自定义认证

    ​ 学习了SpringSecurity的使用,以及跟着源码分析了一遍认证流程,掌握了这个登录认证流程,才能更方便我们做自定义操作。 ​ 下面我们来学习下怎么实现多种登录方式,比如新增加一种邮箱验证码登录的形式,但SpringSecurity默认的Usernamepassword方式不影响。 0. 说明 自定义一

    2024年02月07日
    浏览(23)
  • OAuth2认证流程

    目录 什么是OAuth2 1. OAuth2认证流程 1、用户点击微信扫码 2、用户授权黑马网站访问用户信息 3、黑马程序员的网站获取到授权码 4、携带授权码请求微信认证服务器申请令牌 5、微信认证服务器向黑马程序员的网站响应令牌 6、黑马程序员网站请求微信资源服务器获取资源即用

    2024年02月16日
    浏览(35)
  • SpringSecurity安全框架 ——认证与授权

    目录  一、简介 1.1 什么是Spring Security 1.2 工作原理 1.3 为什么选择Spring Security 1.4 HttpSecurity 介绍🌟 二、用户认证 2.1 导入依赖与配置 2.2 用户对象UserDetails 2.3 业务对象UserDetailsService 2.4 SecurityConfig配置 2.4.1 BCryptPasswordEncoder密码编码器 2.4.2 RememberMe 记住登录信息 2.4.3 CSR

    2024年02月04日
    浏览(30)
  • Spring Security认证流程分析

    先分别实现 userdetailsService,userDetails,passwordEncoder三个接口, 然后就是写登录逻辑 本文章用的是继承UsernamePasswordAuthenticationFilter这个接口 因为这个框架默认登录逻辑是在这里面的,里面的核心就是通过 这里这个接口可以不用写过滤器里,可以直接写在serviceImpl里面的登录逻

    2024年04月28日
    浏览(24)
  • Kerberos认证流程及基本操作

    Kerberos主要是有三个重要的角色: 1、访问服务的Client 2、提供服务的Server 3、KDC(Key Distribution Center)密钥分发中心,其中报错AS(authorization server)和TGS(ticket granting server)   上图 AD其实类似于一个本机的一个数据库,存储所有client的白名单。 根据上图我们梳理胰腺癌Kerb

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包