DaoAuthenticationProvider
DaoAuthenticationProvider 是一个 AuthenticationProvider 实现,它使用 UserDetailsService 和 PasswordEncoder 来验证用户名和密码。
本节探讨 DaoAuthenticationProvider 在 Spring Security 中的工作原理。
下图解释了 AuthenticationManager 的工作原理,该图源自读取用户名和密码章节中的图示。
图1.
DaoAuthenticationProvider 的使用
身份验证Filter来自阅读用户名和密码部分传递了UsernamePasswordAuthenticationToken 至 AuthenticationManager,由以下实现ProviderManager.
这ProviderManager已配置为使用认证提供者类型DaoAuthenticationProvider.
DaoAuthenticationProvider查找UserDetails来自UserDetailsService.
DaoAuthenticationProvider使用PasswordEncoder用于验证密码UserDetails在上一步中返回。
当身份验证成功时,Authentication返回的内容类型为UsernamePasswordAuthenticationToken并且拥有一个作为UserDetails由配置返回UserDetailsService以及至少包含一组权限的集合FACTOR_PASSWORD.
最终,返回的UsernamePasswordAuthenticationToken已设置在SecurityContextHolder通过身份验证Filter.