SEC-2783: XML Configuration Defaults Should Match JavaConfig
* j_username -> username * j_password -> password * j_spring_security_check -> login * j_spring_cas_security_check -> login/cas * j_spring_cas_security_proxyreceptor -> login/cas/proxyreceptor * j_spring_openid_security_login -> login/openid * j_spring_security_switch_user -> login/impersonate * j_spring_security_exit_user -> logout/impersonate * login_error -> error * use-expressions=true by default
This commit is contained in:
+7
-6
@@ -25,6 +25,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.web.util.TextEscapeUtils;
|
||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
|
||||
@@ -38,7 +39,7 @@ import org.springframework.util.Assert;
|
||||
* The parameter names can also be changed by setting the {@code usernameParameter} and {@code passwordParameter}
|
||||
* properties.
|
||||
* <p>
|
||||
* This filter by default responds to the URL {@code /j_spring_security_check}.
|
||||
* This filter by default responds to the URL {@code /login}.
|
||||
*
|
||||
* @author Ben Alex
|
||||
* @author Colin Sampaleanu
|
||||
@@ -48,8 +49,8 @@ import org.springframework.util.Assert;
|
||||
public class UsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
|
||||
//~ Static fields/initializers =====================================================================================
|
||||
|
||||
public static final String SPRING_SECURITY_FORM_USERNAME_KEY = "j_username";
|
||||
public static final String SPRING_SECURITY_FORM_PASSWORD_KEY = "j_password";
|
||||
public static final String SPRING_SECURITY_FORM_USERNAME_KEY = "username";
|
||||
public static final String SPRING_SECURITY_FORM_PASSWORD_KEY = "password";
|
||||
|
||||
private String usernameParameter = SPRING_SECURITY_FORM_USERNAME_KEY;
|
||||
private String passwordParameter = SPRING_SECURITY_FORM_PASSWORD_KEY;
|
||||
@@ -58,7 +59,7 @@ public class UsernamePasswordAuthenticationFilter extends AbstractAuthentication
|
||||
//~ Constructors ===================================================================================================
|
||||
|
||||
public UsernamePasswordAuthenticationFilter() {
|
||||
super("/j_spring_security_check");
|
||||
super(new AntPathRequestMatcher("/login","POST"));
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
@@ -131,7 +132,7 @@ public class UsernamePasswordAuthenticationFilter extends AbstractAuthentication
|
||||
/**
|
||||
* Sets the parameter name which will be used to obtain the username from the login request.
|
||||
*
|
||||
* @param usernameParameter the parameter name. Defaults to "j_username".
|
||||
* @param usernameParameter the parameter name. Defaults to "username".
|
||||
*/
|
||||
public void setUsernameParameter(String usernameParameter) {
|
||||
Assert.hasText(usernameParameter, "Username parameter must not be empty or null");
|
||||
@@ -141,7 +142,7 @@ public class UsernamePasswordAuthenticationFilter extends AbstractAuthentication
|
||||
/**
|
||||
* Sets the parameter name which will be used to obtain the password from the login request..
|
||||
*
|
||||
* @param passwordParameter the parameter name. Defaults to "j_password".
|
||||
* @param passwordParameter the parameter name. Defaults to "password".
|
||||
*/
|
||||
public void setPasswordParameter(String passwordParameter) {
|
||||
Assert.hasText(passwordParameter, "Password parameter must not be empty or null");
|
||||
|
||||
+2
-2
@@ -68,7 +68,7 @@ public class LogoutFilter extends GenericFilterBean {
|
||||
this.handlers = Arrays.asList(handlers);
|
||||
Assert.notNull(logoutSuccessHandler, "logoutSuccessHandler cannot be null");
|
||||
this.logoutSuccessHandler = logoutSuccessHandler;
|
||||
setFilterProcessesUrl("/j_spring_security_logout");
|
||||
setFilterProcessesUrl("/logout");
|
||||
}
|
||||
|
||||
public LogoutFilter(String logoutSuccessUrl, LogoutHandler... handlers) {
|
||||
@@ -81,7 +81,7 @@ public class LogoutFilter extends GenericFilterBean {
|
||||
urlLogoutSuccessHandler.setDefaultTargetUrl(logoutSuccessUrl);
|
||||
}
|
||||
logoutSuccessHandler = urlLogoutSuccessHandler;
|
||||
setFilterProcessesUrl("/j_spring_security_logout");
|
||||
setFilterProcessesUrl("/logout");
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
+6
-6
@@ -91,8 +91,8 @@ import org.springframework.web.filter.GenericFilterBean;
|
||||
* <pre>
|
||||
* <bean id="switchUserProcessingFilter" class="org.springframework.security.web.authentication.switchuser.SwitchUserFilter">
|
||||
* <property name="userDetailsService" ref="userDetailsService" />
|
||||
* <property name="switchUserUrl" value="/j_spring_security_switch_user" />
|
||||
* <property name="exitUserUrl" value="/j_spring_security_exit_user" />
|
||||
* <property name="switchUserUrl" value="/login/impersonate" />
|
||||
* <property name="exitUserUrl" value="/logout/impersonate" />
|
||||
* <property name="targetUrl" value="/index.jsp" />
|
||||
* </bean>
|
||||
* </pre>
|
||||
@@ -105,7 +105,7 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv
|
||||
MessageSourceAware {
|
||||
//~ Static fields/initializers =====================================================================================
|
||||
|
||||
public static final String SPRING_SECURITY_SWITCH_USERNAME_KEY = "j_username";
|
||||
public static final String SPRING_SECURITY_SWITCH_USERNAME_KEY = "username";
|
||||
public static final String ROLE_PREVIOUS_ADMINISTRATOR = "ROLE_PREVIOUS_ADMINISTRATOR";
|
||||
|
||||
//~ Instance fields ================================================================================================
|
||||
@@ -113,8 +113,8 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv
|
||||
private ApplicationEventPublisher eventPublisher;
|
||||
private AuthenticationDetailsSource<HttpServletRequest, ?> authenticationDetailsSource = new WebAuthenticationDetailsSource();
|
||||
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
|
||||
private String exitUserUrl = "/j_spring_security_exit_user";
|
||||
private String switchUserUrl = "/j_spring_security_switch_user";
|
||||
private String exitUserUrl = "/logout/impersonate";
|
||||
private String switchUserUrl = "/login/impersonate";
|
||||
private String targetUrl;
|
||||
private String switchFailureUrl;
|
||||
private String usernameParameter = SPRING_SECURITY_SWITCH_USERNAME_KEY;
|
||||
@@ -489,7 +489,7 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv
|
||||
/**
|
||||
* Allows the parameter containing the username to be customized.
|
||||
*
|
||||
* @param usernameParameter the parameter name. Defaults to {@code j_username}
|
||||
* @param usernameParameter the parameter name. Defaults to {@code username}
|
||||
*/
|
||||
public void setUsernameParameter(String usernameParameter) {
|
||||
this.usernameParameter = usernameParameter;
|
||||
|
||||
+2
-2
@@ -28,8 +28,8 @@ import org.springframework.web.filter.GenericFilterBean;
|
||||
* @since 2.0
|
||||
*/
|
||||
public class DefaultLoginPageGeneratingFilter extends GenericFilterBean {
|
||||
public static final String DEFAULT_LOGIN_PAGE_URL = "/spring_security_login";
|
||||
public static final String ERROR_PARAMETER_NAME = "login_error";
|
||||
public static final String DEFAULT_LOGIN_PAGE_URL = "/login";
|
||||
public static final String ERROR_PARAMETER_NAME = "error";
|
||||
private String loginPageUrl;
|
||||
private String logoutSuccessUrl;
|
||||
private String failureUrl;
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@ public final class AntPathRequestMatcher implements RequestMatcher {
|
||||
* {@code servletPath} + {@code pathInfo} of the request.
|
||||
*/
|
||||
public boolean matches(HttpServletRequest request) {
|
||||
if (httpMethod != null && request.getMethod() != null && httpMethod != HttpMethod.valueOf(request.getMethod())) {
|
||||
if (httpMethod != null && StringUtils.hasText(request.getMethod()) && httpMethod != HttpMethod.valueOf(request.getMethod())) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Request '" + request.getMethod() + " " + getRequestPath(request) + "'"
|
||||
+ " doesn't match '" + httpMethod + " " + pattern);
|
||||
|
||||
+3
-3
@@ -103,10 +103,10 @@ public class AbstractAuthenticationProcessingFilterTests {
|
||||
MockHttpServletRequest request = createMockAuthenticationRequest();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockAuthenticationFilter filter = new MockAuthenticationFilter();
|
||||
filter.setFilterProcessesUrl("/j_spring_security_check");
|
||||
filter.setFilterProcessesUrl("/login");
|
||||
|
||||
DefaultHttpFirewall firewall = new DefaultHttpFirewall();
|
||||
request.setServletPath("/j_spring_security_check;jsessionid=I8MIONOSTHOR");
|
||||
request.setServletPath("/login;jsessionid=I8MIONOSTHOR");
|
||||
|
||||
// the firewall ensures that path parameters are ignored
|
||||
HttpServletRequest firewallRequest = firewall.getFirewalledRequest(request);
|
||||
@@ -211,7 +211,7 @@ public class AbstractAuthenticationProcessingFilterTests {
|
||||
filter.setAuthenticationFailureHandler(failureHandler);
|
||||
successHandler.setDefaultTargetUrl("/");
|
||||
filter.setAuthenticationSuccessHandler(successHandler);
|
||||
filter.setFilterProcessesUrl("/j_spring_security_check");
|
||||
filter.setFilterProcessesUrl("/login");
|
||||
|
||||
try {
|
||||
filter.afterPropertiesSet();
|
||||
|
||||
+4
-4
@@ -30,15 +30,15 @@ public class DefaultLoginPageGeneratingFilterTests {
|
||||
@Test
|
||||
public void generatingPageWithAuthenticationProcessingFilterOnlyIsSuccessFul() throws Exception {
|
||||
DefaultLoginPageGeneratingFilter filter = new DefaultLoginPageGeneratingFilter(new UsernamePasswordAuthenticationFilter());
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/spring_security_login"), new MockHttpServletResponse(), chain);
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/spring_security_login;pathparam=unused"), new MockHttpServletResponse(), chain);
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/login"), new MockHttpServletResponse(), chain);
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/login;pathparam=unused"), new MockHttpServletResponse(), chain);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void generatingPageWithOpenIdFilterOnlyIsSuccessFul() throws Exception {
|
||||
DefaultLoginPageGeneratingFilter filter = new DefaultLoginPageGeneratingFilter(new MockProcessingFilter());
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/spring_security_login"), new MockHttpServletResponse(), chain);
|
||||
filter.doFilter(new MockHttpServletRequest("GET", "/login"), new MockHttpServletResponse(), chain);
|
||||
}
|
||||
|
||||
// Fake OpenID filter (since it's not in this module
|
||||
@@ -62,7 +62,7 @@ public class DefaultLoginPageGeneratingFilterTests {
|
||||
@Test
|
||||
public void handlesNonIso8859CharsInErrorMessage() throws Exception {
|
||||
DefaultLoginPageGeneratingFilter filter = new DefaultLoginPageGeneratingFilter(new UsernamePasswordAuthenticationFilter());
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/spring_security_login");
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/login");
|
||||
request.addParameter("login_error", "true");
|
||||
MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
|
||||
String message = messages.getMessage(
|
||||
|
||||
+4
-4
@@ -22,8 +22,8 @@ public class LogoutHandlerTests extends TestCase {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
request.setRequestURI("/context/j_spring_security_logout;someparam=blah?param=blah");
|
||||
request.setServletPath("/j_spring_security_logout;someparam=blah");
|
||||
request.setRequestURI("/context/logout;someparam=blah?param=blah");
|
||||
request.setServletPath("/logout;someparam=blah");
|
||||
request.setQueryString("otherparam=blah");
|
||||
|
||||
DefaultHttpFirewall fw = new DefaultHttpFirewall();
|
||||
@@ -35,8 +35,8 @@ public class LogoutHandlerTests extends TestCase {
|
||||
request.setContextPath("/context");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
request.setServletPath("/j_spring_security_logout");
|
||||
request.setRequestURI("/context/j_spring_security_logout?param=blah");
|
||||
request.setServletPath("/logout");
|
||||
request.setRequestURI("/context/logout?param=blah");
|
||||
request.setQueryString("otherparam=blah");
|
||||
|
||||
assertTrue(filter.requiresLogout(request, response));
|
||||
|
||||
+19
-19
@@ -67,7 +67,7 @@ public class SwitchUserFilterTests {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setScheme("http");
|
||||
request.setServerName("localhost");
|
||||
request.setRequestURI("/j_spring_security_switch_user");
|
||||
request.setRequestURI("/login/impersonate");
|
||||
|
||||
return request;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ public class SwitchUserFilterTests {
|
||||
@Test
|
||||
public void switchToLockedAccountCausesRedirectToSwitchFailureUrl() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setRequestURI("/j_spring_security_switch_user");
|
||||
request.setRequestURI("/login/impersonate");
|
||||
request.addParameter(SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY, "mcgarrett");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
@@ -162,7 +162,7 @@ public class SwitchUserFilterTests {
|
||||
|
||||
// Now check for the redirect
|
||||
request.setContextPath("/mywebapp");
|
||||
request.setRequestURI("/mywebapp/j_spring_security_switch_user");
|
||||
request.setRequestURI("/mywebapp/login/impersonate");
|
||||
filter = new SwitchUserFilter();
|
||||
filter.setTargetUrl("/target");
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
@@ -181,8 +181,8 @@ public class SwitchUserFilterTests {
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void configMissingUserDetailsServiceFails() throws Exception {
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setExitUserUrl("/j_spring_security_exit_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
filter.setExitUserUrl("/logout/impersonate");
|
||||
filter.setTargetUrl("/main.jsp");
|
||||
filter.afterPropertiesSet();
|
||||
}
|
||||
@@ -191,8 +191,8 @@ public class SwitchUserFilterTests {
|
||||
public void testBadConfigMissingTargetUrl() throws Exception {
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setExitUserUrl("/j_spring_security_exit_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
filter.setExitUserUrl("/logout/impersonate");
|
||||
filter.afterPropertiesSet();
|
||||
}
|
||||
|
||||
@@ -200,9 +200,9 @@ public class SwitchUserFilterTests {
|
||||
public void defaultProcessesFilterUrlMatchesUrlWithPathParameter() {
|
||||
MockHttpServletRequest request = createMockSwitchRequest();
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
|
||||
request.setRequestURI("/webapp/j_spring_security_switch_user;jsessionid=8JHDUD723J8");
|
||||
request.setRequestURI("/webapp/login/impersonate;jsessionid=8JHDUD723J8");
|
||||
assertTrue(filter.requiresSwitchUser(request));
|
||||
}
|
||||
|
||||
@@ -221,12 +221,12 @@ public class SwitchUserFilterTests {
|
||||
SecurityContextHolder.getContext().setAuthentication(admin);
|
||||
|
||||
MockHttpServletRequest request = createMockSwitchRequest();
|
||||
request.setRequestURI("/j_spring_security_exit_user");
|
||||
request.setRequestURI("/logout/impersonate");
|
||||
|
||||
// setup filter
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
filter.setExitUserUrl("/j_spring_security_exit_user");
|
||||
filter.setExitUserUrl("/logout/impersonate");
|
||||
filter.setSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/webapp/someOtherUrl"));
|
||||
|
||||
// run 'exit'
|
||||
@@ -248,12 +248,12 @@ public class SwitchUserFilterTests {
|
||||
SecurityContextHolder.clearContext();
|
||||
|
||||
MockHttpServletRequest request = createMockSwitchRequest();
|
||||
request.setRequestURI("/j_spring_security_exit_user");
|
||||
request.setRequestURI("/logout/impersonate");
|
||||
|
||||
// setup filter
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
filter.setExitUserUrl("/j_spring_security_exit_user");
|
||||
filter.setExitUserUrl("/logout/impersonate");
|
||||
|
||||
// run 'exit', expect fail due to no current user
|
||||
FilterChain chain = mock(FilterChain.class);
|
||||
@@ -268,10 +268,10 @@ public class SwitchUserFilterTests {
|
||||
MockHttpServletRequest request = createMockSwitchRequest();
|
||||
request.setContextPath("/webapp");
|
||||
request.addParameter(SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY, "jacklord");
|
||||
request.setRequestURI("/webapp/j_spring_security_switch_user");
|
||||
request.setRequestURI("/webapp/login/impersonate");
|
||||
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
filter.setSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/someOtherUrl"));
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
|
||||
@@ -294,10 +294,10 @@ public class SwitchUserFilterTests {
|
||||
MockHttpServletRequest request = createMockSwitchRequest();
|
||||
request.setContextPath("/webapp");
|
||||
request.addParameter(SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY, "jacklord");
|
||||
request.setRequestURI("/webapp/j_spring_security_switch_user");
|
||||
request.setRequestURI("/webapp/login/impersonate");
|
||||
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
SimpleUrlAuthenticationSuccessHandler switchSuccessHandler =
|
||||
new SimpleUrlAuthenticationSuccessHandler("/someOtherUrl");
|
||||
DefaultRedirectStrategy contextRelativeRedirector = new DefaultRedirectStrategy();
|
||||
@@ -325,7 +325,7 @@ public class SwitchUserFilterTests {
|
||||
|
||||
// http request
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setRequestURI("/webapp/j_spring_security_switch_user");
|
||||
request.setRequestURI("/webapp/login/impersonate");
|
||||
request.addParameter(SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY, "jacklord");
|
||||
|
||||
// http response
|
||||
@@ -334,7 +334,7 @@ public class SwitchUserFilterTests {
|
||||
// setup filter
|
||||
SwitchUserFilter filter = new SwitchUserFilter();
|
||||
filter.setUserDetailsService(new MockUserDetailsService());
|
||||
filter.setSwitchUserUrl("/j_spring_security_switch_user");
|
||||
filter.setSwitchUserUrl("/login/impersonate");
|
||||
filter.setSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/webapp/someOtherUrl"));
|
||||
|
||||
FilterChain chain = mock(FilterChain.class);
|
||||
|
||||
Reference in New Issue
Block a user