diff --git a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java index 935448e10c..d324bf7d83 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java +++ b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java @@ -115,6 +115,7 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv private String switchUserUrl = "/j_spring_security_switch_user"; private String targetUrl; private String switchFailureUrl; + private String usernameParameter = SPRING_SECURITY_SWITCH_USERNAME_KEY; private SwitchUserAuthorityChanger switchUserAuthorityChanger; private UserDetailsService userDetailsService; private UserDetailsChecker userDetailsChecker = new AccountStatusUserDetailsChecker(); @@ -193,7 +194,7 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv protected Authentication attemptSwitchUser(HttpServletRequest request) throws AuthenticationException { UsernamePasswordAuthenticationToken targetUserRequest; - String username = request.getParameter(SPRING_SECURITY_SWITCH_USERNAME_KEY); + String username = request.getParameter(usernameParameter); if (username == null) { username = ""; @@ -474,6 +475,15 @@ public class SwitchUserFilter extends GenericFilterBean implements ApplicationEv this.userDetailsChecker = userDetailsChecker; } + /** + * Allows the parameter containing the username to be customized. + * + * @param usernameParameter the parameter name. Defaults to {@code j_username} + */ + public void setUsernameParameter(String usernameParameter) { + this.usernameParameter = usernameParameter; + } + /** * Strips any content after the ';' in the request URI * diff --git a/web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java b/web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java index dc6dc4576a..4c1d246f76 100644 --- a/web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java +++ b/web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java @@ -74,9 +74,10 @@ public class SwitchUserFilterTests { private Authentication switchToUser(String name) { MockHttpServletRequest request = new MockHttpServletRequest(); - request.addParameter(SwitchUserFilter.SPRING_SECURITY_SWITCH_USERNAME_KEY, name); + request.addParameter("myUsernameParameter", name); SwitchUserFilter filter = new SwitchUserFilter(); + filter.setUsernameParameter("myUsernameParameter"); filter.setUserDetailsService(new MockUserDetailsService()); return filter.attemptSwitchUser(request);