此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Security 7.0.4spring-doc.cadn.net.cn

DaoAuthenticationProvider

DaoAuthenticationProvider 是一个 AuthenticationProvider 实现,它使用 UserDetailsServicePasswordEncoder 来验证用户名和密码。spring-doc.cadn.net.cn

本节探讨 DaoAuthenticationProvider 在 Spring Security 中的工作原理。 下图解释了 AuthenticationManager 的工作原理,该图源自读取用户名和密码章节中的图示。spring-doc.cadn.net.cn

daoauthenticationprovider
图1. DaoAuthenticationProvider 的使用

number 1身份验证Filter来自阅读用户名和密码部分传递了UsernamePasswordAuthenticationTokenAuthenticationManager,由以下实现ProviderManager.spring-doc.cadn.net.cn

number 2ProviderManager已配置为使用认证提供者类型DaoAuthenticationProvider.spring-doc.cadn.net.cn

number 3 DaoAuthenticationProvider查找UserDetails来自UserDetailsService.spring-doc.cadn.net.cn

number 4 DaoAuthenticationProvider使用PasswordEncoder用于验证密码UserDetails在上一步中返回。spring-doc.cadn.net.cn

number 5当身份验证成功时,Authentication返回的内容类型为UsernamePasswordAuthenticationToken并且拥有一个作为UserDetails由配置返回UserDetailsService. 最终,返回的UsernamePasswordAuthenticationToken已设置在SecurityContextHolder通过身份验证Filter.spring-doc.cadn.net.cn