|
@@ -15,6 +15,7 @@
|
|
*/
|
|
*/
|
|
package org.springframework.security.config.annotation.web.configurers
|
|
package org.springframework.security.config.annotation.web.configurers
|
|
|
|
|
|
|
|
+import org.springframework.beans.factory.BeanCreationException
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.security.config.annotation.AnyObjectPostProcessor
|
|
import org.springframework.security.config.annotation.AnyObjectPostProcessor
|
|
import org.springframework.security.config.annotation.BaseSpringSpec
|
|
import org.springframework.security.config.annotation.BaseSpringSpec
|
|
@@ -22,6 +23,7 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
|
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
|
|
|
|
+import org.springframework.security.web.authentication.RememberMeServices
|
|
import org.springframework.security.web.authentication.logout.LogoutFilter
|
|
import org.springframework.security.web.authentication.logout.LogoutFilter
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -111,4 +113,25 @@ class LogoutConfigurerTests extends BaseSpringSpec {
|
|
.csrf().disable()
|
|
.csrf().disable()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ def "SEC-3170: LogoutConfigurer allows null LogoutHandler"() {
|
|
|
|
+ when:
|
|
|
|
+ loadConfig(RememberMeNoLogoutHandler)
|
|
|
|
+ request.method = "GET"
|
|
|
|
+ request.servletPath = "/logout"
|
|
|
|
+ findFilter(LogoutFilter).doFilter(request, response, chain)
|
|
|
|
+ then:
|
|
|
|
+ thrown(BeanCreationException)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @EnableWebSecurity
|
|
|
|
+ static class RememberMeNoLogoutHandler extends WebSecurityConfigurerAdapter {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void configure(HttpSecurity http) throws Exception {
|
|
|
|
+ http
|
|
|
|
+ .rememberMe()
|
|
|
|
+ .rememberMeServices(Mock(RememberMeServices))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|