Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring安全性:每种使用Spring安全性的应用程序中都存在UserDetails和UserDetailsService吗?_Spring_Spring Security - Fatal编程技术网

Spring安全性:每种使用Spring安全性的应用程序中都存在UserDetails和UserDetailsService吗?

Spring安全性:每种使用Spring安全性的应用程序中都存在UserDetails和UserDetailsService吗?,spring,spring-security,Spring,Spring Security,我有个问题要问Spring Security 3.0.5 当使用Spring Security保护web应用程序时,“UserDetails”-对象是否始终存在?我的意思是,使用Spring安全性的每一种应用程序(即使在LDAP、X.509或CAS等其他系统中)是否也提供了“UserDetails”对象 此外,如果是,那么每个应用程序是否都有UserDetailsService 嗯,通读Spring安全文档我不这么认为,但我读到核心组件总是存在的(SecurityContextHolder、Se

我有个问题要问Spring Security 3.0.5

当使用Spring Security保护web应用程序时,“UserDetails”-对象是否始终存在?我的意思是,使用Spring安全性的每一种应用程序(即使在LDAP、X.509或CAS等其他系统中)是否也提供了“UserDetails”对象

此外,如果是,那么每个应用程序是否都有UserDetailsService

嗯,通读Spring安全文档我不这么认为,但我读到核心组件总是存在的(SecurityContextHolder、SecurityContext、身份验证)。如果是这样,如果身份验证对象不包含UserDetails对象,那么它有什么意义


谢谢大家!

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

但是,许多机制确实使用UsernamePasswordAuthenticationToken,它引用UserDetails对象。例如:UsernamePasswordAuthenticationFilter+DaoAuthenticationProvider。还包括UsernamePasswordFilter+LdapAuthenticationProvider

但是:只有DaoAuthenticationProviders使用UserDetails服务


在实践中,如果您使用web表单向用户请求用户名/密码,那么最终可能会使用UsernamePasswordAuthenticationToken,从而使用UserDetails。但是,如果您使用的是DaoAuthenticationProvider,您将只使用UserDetails服务。

谢谢!但是SecurityContextHolder、SecurityContext和身份验证呢?必须始终使用这些对象,但SecurityContext引用的身份验证只是一个接口。UsernamePasswordAuthenticationToken是一种身份验证类型,它引用了UserDetails,但也可以使用其他类型的身份验证(请参阅Javadoc了解身份验证)。谢谢。我知道可以使用其他类型的身份验证。我只是想知道,是否每个由spring security保护的应用程序都有一个SecurityContextHolder、一个SecurityContext和身份验证对象(不管它到底是哪种令牌,对我来说都无关紧要,它们都代表主体,不是吗?)。这三个对象被描述为“核心”组件,这就是我想知道它的原因!:-)是的,这些信息始终存在,但UserDetails/UserDetailsService不存在。