James Moger
2013-11-18 cacf8bff097fbb66a7be1bfe267b5da2605145f8
src/main/java/com/gitblit/AuthenticationFilter.java
@@ -28,23 +28,26 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.manager.ISessionManager;
import com.gitblit.models.UserModel;
import com.gitblit.utils.DeepCopier;
import com.gitblit.utils.StringUtils;
/**
 * The AuthenticationFilter is a servlet filter that preprocesses requests that
 * match its url pattern definition in the web.xml file.
 *
 *
 * http://en.wikipedia.org/wiki/Basic_access_authentication
 *
 *
 * @author James Moger
 *
 *
 */
public abstract class AuthenticationFilter implements Filter {
@@ -54,20 +57,26 @@
   protected transient Logger logger = LoggerFactory.getLogger(getClass());
   protected final ISessionManager sessionManager;
   protected AuthenticationFilter(ISessionManager sessionManager) {
      this.sessionManager = sessionManager;
   }
   /**
    * doFilter does the actual work of preprocessing the request to ensure that
    * the user may proceed.
    *
    *
    * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
    *      javax.servlet.ServletResponse, javax.servlet.FilterChain)
    */
   @Override
   public abstract void doFilter(final ServletRequest request, final ServletResponse response,
         final FilterChain chain) throws IOException, ServletException;
   /**
    * Allow the filter to require a client certificate to continue processing.
    *
    *
    * @return true, if a client certificate is required
    */
   protected boolean requiresClientCertificate() {
@@ -76,7 +85,7 @@
   /**
    * Returns the full relative url of the request.
    *
    *
    * @param httpRequest
    * @return url
    */
@@ -93,19 +102,18 @@
   /**
    * Returns the user making the request, if the user has authenticated.
    *
    *
    * @param httpRequest
    * @return user
    */
   protected UserModel getUser(HttpServletRequest httpRequest) {
      UserModel user = GitBlit.self().authenticate(httpRequest, requiresClientCertificate());
      UserModel user = sessionManager.authenticate(httpRequest, requiresClientCertificate());
      return user;
   }
   /**
    * Taken from Jetty's LoginAuthenticator.renewSessionOnAuthentication()
    */
   @SuppressWarnings("unchecked")
   protected void newSession(HttpServletRequest request, HttpServletResponse response) {
      HttpSession oldSession = request.getSession(false);
      if (oldSession != null && oldSession.getAttribute(SESSION_SECURED) == null) {
@@ -145,14 +153,13 @@
   /**
    * Wraps a standard HttpServletRequest and overrides user principal methods.
    */
   public static class AuthenticatedRequest extends ServletRequestWrapper {
   public static class AuthenticatedRequest extends HttpServletRequestWrapper {
      private UserModel user;
      public AuthenticatedRequest(HttpServletRequest req) {
         super(req);
         user = new UserModel("anonymous");
         user.isAuthenticated = false;
         user = DeepCopier.copy(UserModel.ANONYMOUS);
      }
      UserModel getUser() {