DaoAuthenticationProvider

本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。

DaoAuthenticationProvider 是一个 AuthenticationProvider 的实现,它使用 UserDetailsServicePasswordEncoder 来验证一个用户名和密码。

本节研究了 DaoAuthenticationProvider 在Spring Security中的工作原理。下图以 读取用户名和密码 部分的示例图解释了 AuthenticationManager 的工作原理。

daoauthenticationprovider
Figure 1. DaoAuthenticationProvider Usage

number 1 读取用户名和密码部分的认证 FilterUsernamePasswordAuthenticationToken 传递给 AuthenticationManager,它由 ProviderManager 实现。

number 2 ProviderManager 被配置为使用一个 DaoAuthenticationProvider 类型的 AuthenticationProvider

number 3 DaoAuthenticationProviderUserDetailsService 中查找 UserDetails

number 4 DaoAuthenticationProvider 使用 PasswordEncoder 来验证上一步返回的 UserDetails 上的密码。

number 5 当认证成功时,返回的 AuthenticationUsernamePasswordAuthenticationToken 类型,并且有一个委托人(principal)是由配置的 UserDetailsService 返回的 UserDetails。最终,返回的 UsernamePasswordAuthenticationToken 被认证 Filter 设置在 SecurityContextHolder 上。