/*
- * $Header: /cvsroot/securityfilter/securityfilter/src/share/org/securityfilter/filter/SecurityFilter.java,v 1.18 2003/05/26 11:14:52 maxcooper Exp $
- * $Revision: 1.18 $
- * $Date: 2003/05/26 11:14:52 $
+ * $Header: /cvsroot/securityfilter/securityfilter/src/share/org/securityfilter/filter/SecurityFilter.java,v 1.19 2003/06/09 11:02:43 maxcooper Exp $
+ * $Revision: 1.19 $
+ * $Date: 2003/06/09 11:02:43 $
*
* ====================================================================
* The SecurityFilter Software License, Version 1.1
* @author Max Cooper (max@maxcooper.com)
* @author Daya Sharma (iamdaya@yahoo.com, billydaya@sbcglobal.net)
* @author Torgeir Veimo (torgeir@pobox.com)
- * @version $Revision: 1.18 $ $Date: 2003/05/26 11:14:52 $
+ * @version $Revision: 1.19 $ $Date: 2003/06/09 11:02:43 $
*/
public class SecurityFilter implements Filter {
- public static final String SAVED_REQUEST_URL = SecurityFilter.class.getName() + ".SAVED_REQUEST_URL";
- public static final String SAVED_REQUEST = SecurityFilter.class.getName() + ".SAVED_REQUEST";
- public static final String ALREADY_PROCESSED = SecurityFilter.class.getName() + ".ALREADY_PROCESSED";
-
public static final String CONFIG_FILE_KEY = "config";
public static final String DEFAULT_CONFIG_FILE = "/WEB-INF/securityfilter-config.xml";
+
public static final String VALIDATE_KEY = "validate";
+
+ public static final String LOGIN_SUBMIT_PATTERN_KEY = "loginSubmitPattern";
+ public static final String DEFAULT_LOGIN_SUBMIT_PATTERN = "/j_security_check";
+ protected String loginSubmitPattern;
+
public static final String TRUE = "true";
+
+ public static final String SAVED_REQUEST_URL = SecurityFilter.class.getName() + ".SAVED_REQUEST_URL";
+ public static final String SAVED_REQUEST = SecurityFilter.class.getName() + ".SAVED_REQUEST";
+ public static final String ALREADY_PROCESSED = SecurityFilter.class.getName() + ".ALREADY_PROCESSED";
+
public static final String BASIC_WINDOW_SHOWN = "basic_window_shown";
public static final String LOGIN_ATTEMPTS = "loginAttempts";
+ protected static final String DUMMY_TOKEN = "dummyToken";
+
+ protected static final String FORM_USERNAME = "j_username";
+ protected static final String FORM_PASSWORD = "j_password";
+
public static final Base64 base64Helper = new Base64();
protected FilterConfig config;
protected String defaultPage;
protected URLPatternFactory patternFactory;
protected List patternList;
+
protected String authMethod;
protected boolean basic = false;
- protected String tooManyInCorrectLogins;
-
- protected static final String DUMMY_TOKEN = "dummyToken";
- protected static final String FORM_USERNAME = "j_username";
- protected static final String FORM_PASSWORD = "j_password";
- protected static final String FORM_PATTERN = "formPattern";
- protected String form_submit_url = "/j_security_check";
+ protected String tooManyIncorrectLogins;
/**
* Perform filtering operation, and optionally pass the request down the chain.
processLogin(wrappedRequest, hRes);
return;
} else {
- if (requestURL.endsWith(form_submit_url)) {
+ if (requestURL.endsWith(loginSubmitPattern)) {
processLogin(wrappedRequest, hRes);
return;
}
patternFactory = new URLPatternFactory();
// parse config file
+ // config file name
String configFile = config.getInitParameter(CONFIG_FILE_KEY);
if (configFile == null) {
configFile = DEFAULT_CONFIG_FILE;
}
- form_submit_url = config.getInitParameter(FORM_PATTERN);
URL configURL = config.getServletContext().getResource(configFile);
+ // validate config file?
String validate = config.getInitParameter(VALIDATE_KEY);
+ // login submit pattern
+ loginSubmitPattern = config.getInitParameter(LOGIN_SUBMIT_PATTERN_KEY);
+ if (loginSubmitPattern == null) {
+ loginSubmitPattern = DEFAULT_LOGIN_SUBMIT_PATTERN;
+ }
SecurityConfig securityConfig = new SecurityConfig(TRUE.equalsIgnoreCase(validate));
securityConfig.loadConfig(configURL);
errorPagePattern = patternFactory.createURLPattern(errorPage, null, null, 0);
authMethod = securityConfig.getAuthMethod();
// todo: support DIGEST and CERT authentication schemes.
- if (authMethod.equalsIgnoreCase(HttpServletRequest.BASIC_AUTH))
+ if (authMethod.equalsIgnoreCase(HttpServletRequest.BASIC_AUTH)) {
basic = true;
+ }
// create pattern list
patternList = new ArrayList();
loginAttempts += 1;
}
// todo: we can put some useful message here, perhaps a internationlizable format of message.
- tooManyInCorrectLogins = "Sorry you are having problems logging in, please try again";
+ tooManyIncorrectLogins = "Sorry you are having problems logging in, please try again";
String loginAttemptMessage = "Login attempt number " + loginAttempts;
String logo;
if (basic) {
request.getSession().setAttribute(LOGIN_ATTEMPTS, new Integer(loginAttempts));
} else {
request.getSession().removeAttribute(LOGIN_ATTEMPTS);
- response.sendError(HttpServletResponse.SC_UNAUTHORIZED, tooManyInCorrectLogins);
+ response.sendError(HttpServletResponse.SC_UNAUTHORIZED, tooManyIncorrectLogins);
}
} else {
response.sendRedirect(request.getContextPath() + loginPage);