我正在尝试使用外部服务在Spring设置预身份验证安全性。登录入口点重定向到一个外部页面,该页面在成功登录后会将身份验证信息放入 Cookie 中。之后,外部应用程序重定向回我的应用程序,并且我的 AbstractPreauthicatedProcessingFilter
被正确调用,并且我能够返回一个主体值,然后我希望将其传递给我的用户详细信息服务,在那里我可以创建正确的用户对象,但它最终会在此之前抛出错误。这是代码
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private UserDetailsService userDetailsService;
private PreAuthenticatedAuthenticationProvider preAuthenticatedProvider;
@Autowired
private CspProperties cspProperties;
public SecurityConfig() {
super();
userDetailsService = new CspUserDetailService();
UserDetailsByNameServiceWrapper<PreAuthenticatedAuthenticationToken> wrapper =
new UserDetailsByNameServiceWrapper<PreAuthenticatedAuthenticationToken>(userDetailsService);
preAuthenticatedProvider = new PreAuthenticatedAuthenticationProvider();
preAuthenticatedProvider.setPreAuthenticatedUserDetailsService(wrapper);
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(preAuthenticatedProvider);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
CspAuthenticationFilter cspFilter = new CspAuthenticationFilter();
cspFilter.setAuthenticationManager(authenticationManager());
//entry point
LoginUrlWithReturnUrlEntryPoint entryPoint = new LoginUrlWithReturnUrlEntryPoint(cspProperties.getNoCookieURL());
http
.addFilter(cspFilter)
.authorizeRequests()
.antMatchers("/secure").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic()
.authenticationEntryPoint(entryPoint);
}
}
这就是我犯的错误
2014-06-28 12:30:46.522 DEBUG 13752 --- [nio-8080-exec-3] secure.CspAuthenticationFilter : Checking secure context token: null
2014-06-28 12:30:46.524 DEBUG 13752 --- [nio-8080-exec-3] secure.CspAuthenticationFilter : preAuthenticatedPrincipal = 6045656|aeb4b387f41c1557cfb2604
881840b96|W|40|CDTTut,CompXL|xxxxx|PROD|201406290157, trying to authenticate
2014-06-28 12:30:46.524 DEBUG 13752 --- [nio-8080-exec-3] secure.CspAuthenticationFilter : Cleared security context due to exception
org.springframework.security.authentication.ProviderNotFoundException: No AuthenticationProvider found for org.springframework.security.web.authentication.preau
th.PreAuthenticatedAuthenticationToken
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:199)
at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doAuthenticate(AbstractPreAuthenticatedProcessingFilter.jav
a:121)
at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:91)
任何帮助都将不胜感激
结果证明这个配置是正确的,问题出在预授权过滤器,在某些情况下它应该返回null。
我的要求是: 在我的应用程序中,当用户通过登录屏幕(而不是使用Spring Security)登录时,身份验证第一次由定制的第三方API执行。现在,我们几乎没有使用rest服务调用的增强功能。根据要求,在从应用程序发出任何rest调用之前,我们需要根据数据库重新验证用户。由于用户在使用登录屏幕登录时已经进行了验证,并且请求中提供了这些详细信息,因此我计划使用spring security对用户进行
我目前正在使用Spring Boot创建一个新的web应用程序,并开始集成Spring Security进行身份验证。在成功地学习了基于Spring Boot的LDAP教程之后,我想将基于JavaConfig的配置指向我的Active Directory实例。 我的应用程序现在按预期处理错误凭据,但有效凭据现在会导致 这是一个常见的问题——在许多地方都遇到过这个问题。解决方案似乎是设置上下文。引用
我正在尝试将Hawtio(1.4.64)连接到运行在Tomcat7的Spring应用程序中的Jolokia代理(1.3.3)。 在最近升级到Spring Security(4.0.3)之后,hawtio停止了正确的身份验证(使用基本auth),我们被踢回登录页面,类似于问题#1975。与这个问题不同的是,我们只使用Jolokia代理,而不是在应用程序中包含hawtio(我们没有使用Spring B
我们在将主干中编写的单页应用程序与SAML身份验证挂钩时遇到了一些问题。下面是我们的数据(基于http://developer.okta.com/docs/guides/saml_guidance#planning-对于saml)-SPA已加载-首先对后端(SP)的请求导致响应,告诉其重定向IDP-然后浏览器位于IDP页面。基本上,我们的SPA已经消失了-成功登录后,IDP会用帖子重定向。此帖子包
我正在尝试使用Spring Security UserDetailService身份验证使用电子邮件而不是用户名登录,但我无法登录并获取 org.springframework.security.authentication.内部身份验证服务异常。 调试代码时,调试器不会跟踪 用户user=userDao。findByUserName(用户电子邮件);来自UserServiceImpl。java和
我正在编写一个需要用户登录的web应用程序。我的公司有一个Active Directory服务器,我想为此目的使用它。但是,我在使用Spring验证用户凭据时遇到了麻烦。 完整StackTrace: 当我使用Ldap-Explorer浏览广告并搜索(Spring在ActiveDirectoryLdapAuthenticationProvider:SearchForUser(...)中这样做)时,它