SEC-606: Added support for customizable credentials character set.

This commit is contained in:
Luke Taylor 2008-05-29 18:00:15 +00:00
parent 36a192b70f
commit c031588975

View File

@ -93,6 +93,7 @@ public class BasicProcessingFilter extends SpringSecurityFilter implements Initi
private AuthenticationManager authenticationManager; private AuthenticationManager authenticationManager;
private RememberMeServices rememberMeServices; private RememberMeServices rememberMeServices;
private boolean ignoreFailure = false; private boolean ignoreFailure = false;
private String credentialsCharset = "UTF-8";
//~ Methods ======================================================================================================== //~ Methods ========================================================================================================
@ -114,8 +115,8 @@ public class BasicProcessingFilter extends SpringSecurityFilter implements Initi
} }
if ((header != null) && header.startsWith("Basic ")) { if ((header != null) && header.startsWith("Basic ")) {
String base64Token = header.substring(6); byte[] base64Token = header.substring(6).getBytes("UTF-8");
String token = new String(Base64.decodeBase64(base64Token.getBytes())); String token = new String(Base64.decodeBase64(base64Token), getCredentialsCharset(httpRequest));
String username = ""; String username = "";
String password = ""; String password = "";
@ -235,6 +236,15 @@ public class BasicProcessingFilter extends SpringSecurityFilter implements Initi
this.rememberMeServices = rememberMeServices; this.rememberMeServices = rememberMeServices;
} }
public void setCredentialsCharset(String credentialsCharset) {
Assert.hasText(credentialsCharset, "credentialsCharset cannot be null or empty");
this.credentialsCharset = credentialsCharset;
}
protected String getCredentialsCharset(HttpServletRequest httpRequest) {
return credentialsCharset;
}
public int getOrder() { public int getOrder() {
return FilterChainOrder.BASIC_PROCESSING_FILTER; return FilterChainOrder.BASIC_PROCESSING_FILTER;
} }