Spring实战----Security4.1.3认证过程源码分析
Posted Herman-Hong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring实战----Security4.1.3认证过程源码分析相关的知识,希望对你有一定的参考价值。
上一篇的配置中基本上涵盖了认证过程中的各种情况,现通过时序图对其用到的Security源码进行分析
认证时序图
上面两幅图(分别是鉴权过程和认证登录过程)中的操作过程(图中不全)涵盖了下面的
认证过程
如果用户直接访问一个受保护的资源,那么认证过程将如下:
1、FilterSecurityInterceptor对其进行鉴权,没有认证或者没有权限则抛异常给ExceptionTranslationFilter,根据没有认证或者没有权限分别进行处理。
2、没有认证的情况下LoginUrlAuthenticationEntryPoint引导用户进行登录,通常是重定向到一个基于form表单进行登录的页面,具体视配置而定。
3、用户输入用户名和密码后请求认证,UsernamePasswordAuthenticationFilter会户名和密码封装成一个UsernamePasswordAuthenticationToken对象,然后把它传递给AuthenticationManager进行认证。
4、如果认证时用户不存在或者密码错误由SimpleUrlAuthenticationFailureHandler进行处理,跳转到设置的页面(一般是登录页面),上一篇中有说明
5、如果认证成功则会保存返回的Authentication到SecurityContext,然后(SavedRequestAwareAuthenticationSuccessHandler)默认会将用户重定向到之前访问的页面(可以自定义,上一篇中有说明)。
6、用户登录认证成功后再次访问之前受保护的资源时FilterSecurityInterceptor会对用户进行权限鉴定,如不存在对应的访问权限,则AccessDeniedHandlerImpl会返回403错误码(可以自定义返回到指定页面,上一篇中有说明)。
以上是关于Spring实战----Security4.1.3认证过程源码分析的主要内容,如果未能解决你的问题,请参考以下文章
Spring实战----源码解析Spring Security4.1.3中的过滤器Filter配置
Spring实战----security4.1.3认证的过程以及原请求信息的缓存及恢复(RequestCache)
Spring实战----Security4.1.3实现根据请求跳转不同登录页以及登录后根据权限跳转到不同页配置
Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面
Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面