14.Spring Security应用详解-工作原理-认证流程

认证流程

image

让我们仔细分析认证过程:

  • 1.用户提交用户名,密码被SecurityFilterChain中的UsernamePasswordAuthenticationFilter过滤器获取到,封装为请求Authentication,通常情况下是UsernamePasswordAuthenticationToken这个实现类。
  • 2.然后过滤器将Authentication提交至认证管理器(AuthenticationManager)进行认证
  • 3.认证成功后,AuthenticationManager身份管理器返回一个被填充满了信息的(包括上面提交到的权限信息,身份信息,细节信息,但密码通常会被移除)Authentication实例。
  • 4.SecurityContextHolder安全上下文容器将第3步填充了信息的Authentication。通过SecurityContextHolder.getContext().setAuthentication(...)方法,设置到其中。

可以看出AuthenticationManager(认证管理器)是认证相关的核心接口,也是发起认证的出发点,它的实现类为ProviderManager。而Spring Security支持多种认证方式,因此ProviderManager维护着一个List<AuthenticationProvider>列表,存放多种认证方式,最终实际的认证工作是由AuthenticationProvider完成的。咱们知道web表单的对应的AuthenticationProvider实现类为DaoAuthenticationProvider将UserDetails填充至Authentication。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容