Spring Security:UserDetails和UserDetailsS​​ervice是否存在于使用Spring Security的各种应用程序中?

时间:2011-05-20 10:04:26

标签: spring spring-security

我向Spring Security 3.0.5提出了一个问题。

使用Spring Security保护Web应用程序时,“UserDetails” - 对象始终是否存在?我的意思是,使用Spring Security的每种应用程序(甚至在其他系统如LDAP或X.509或CAS中)是否也提供“UserDetails” - 对象?

此外,如果是,那么每个应用程序是否都有UserDetailsS​​ervice?

那么,阅读Spring Security文档我不这么认为,但我读到核心组件总是存在(SecurityContextHolder,SecurityContext,Authentication)。如果是这样,那么Authentication对象有什么意义,如果它不包含UserDetails-Object?

谢谢!

1 个答案:

答案 0 :(得分:2)

简短回答是否定。不同类型的身份验证机制可以使用不同类型的Authentications

但是,许多机制都使用UsernamePasswordAuthenticationToken,它具有对UserDetails对象的引用。例如:UsernamePasswordAuthenticationFilter + DaoAuthenticationProvider。还有UsernamePasswordFilter + LdapAuthenticationProvider。

但是:只有DaoAuthenticationProviders使用UserDetailsS​​ervice。

实际上,如果您使用Web表单要求用户输入用户名/密码,您可能最终会使用UsernamePasswordAuthenticationToken,从而使用UserDetails。但是,如果您使用的是DaoAuthenticationProvider,则只能使用UserDetailsS​​ervice。