江苏建设会计学会网站,网页制作与网站建设实战大全光盘,新闻源代发网站怎么做,域名网站账号前言
本节内容是关于spring security安全框架认证流程的源码分析#xff0c;spring security的认证流程主要是在UsernamePasswordAuthenticationFilter过滤器中实现的。我们会通过源码层级的分析#xff0c;了解清楚spring security的底层是如何实现用户的认证的。
正文
1…前言
本节内容是关于spring security安全框架认证流程的源码分析spring security的认证流程主要是在UsernamePasswordAuthenticationFilter过滤器中实现的。我们会通过源码层级的分析了解清楚spring security的底层是如何实现用户的认证的。
正文
1.发起post方式的登录请求/login - 请求首先会进入抽象的认证授权处理过滤器AbstractAuthenticationProcessingFilter中该过滤器是UsernamePasswordAuthenticationFilter认证过滤器的抽象实现 2.调用AbstractAuthenticationProcessingFilter过滤器中的doFilter方法完成登录用户认证的流程 - 其核心步骤主要分为以下五个阶段首先判断是否是需要授权的form表单请求如果不是则直接放行进入下一个过滤器第二步根据提交的用户名和密码使用认证管理器验证用户信息如果认证信息不存在则直接返回否则继续后续的流程第三步执行配置的session会话访问策略第四步如果认证成功将认证结果信息直接返回完成认证过程最后如果认证失败则将认证的失败信息返回。 2.1requiresAuthentication()方法判断是否是需要认证的请求 - 调用requiresAuthentication方法匹配登录请求如果是/login返回true,否则返回false - 调用matches方法完成具体的匹配逻辑只有请求方式是post请求路径是/login的才会执行后续的用户信息认证流程否则直接放行。 2.2调用UsernamePasswordAuthenticationFilter中的attemptAuthentication方法完成用户信息的认证 - 用户认证的完整步骤 ① 从请求域获取默认的用户名数据 ② 从请求域获取默认的密码数据 ③ 封装用户数据 ④ 调用authenticate方法完成认证用户 ⑤调用AbstractUserDetailsAuthenticationProvider抽象方法authenticate完成用户信息的认证 ⑥调用DaoAuthenticationProvider类中的retrieveUser实现具体的认证逻辑 ⑦调用DaoAuthenticationProvider类中的additionalAuthenticationChecks方法比对用户密码是否和请求中的密码一致 ⑧认证成功后返回一个成功的认证对象Authentication 2.3 调用CompositeSessionAuthenticationStrategy实现类中的onAuthentication方法完成session会话策略处理 - session会话的处理 2.4调用successfulAuthentication方法完成用户认证成功的处理 - 实现认证成功的处理 - 进入自定义的认证处理器完成用户的认证流程 2.5 调用unsuccessfulAuthentication方法完成认证失败的处理 - 清除上下文信息进入认证失败的处理器 - 自定义的认证失败处理器 3.整体认证流程 结语
至此关于spring securtity的认证流程源码解析到这里就结束了我们下期见。。。。。。