[jboss-cvs] jboss-seam/src/main/org/jboss/seam/web ...

Shane Bryzak sbryzak at redhat.com
Sun May 27 05:24:31 EDT 2007


  User: sbryzak2
  Date: 07/05/27 05:24:31

  Modified:    src/main/org/jboss/seam/web  HttpAuthFilter.java
  Log:
  JBSEAM-743
  
  Revision  Changes    Path
  1.5       +46 -7     jboss-seam/src/main/org/jboss/seam/web/HttpAuthFilter.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HttpAuthFilter.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/HttpAuthFilter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- HttpAuthFilter.java	25 May 2007 01:33:21 -0000	1.4
  +++ HttpAuthFilter.java	27 May 2007 09:24:31 -0000	1.5
  @@ -8,12 +8,14 @@
   import java.util.HashMap;
   import java.util.Map;
   
  +import javax.faces.event.PhaseId;
   import javax.servlet.FilterChain;
   import javax.servlet.ServletException;
   import javax.servlet.ServletRequest;
   import javax.servlet.ServletResponse;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  +import javax.servlet.http.HttpSession;
   
   import org.jboss.seam.annotations.Filter;
   import org.jboss.seam.annotations.Install;
  @@ -23,7 +25,9 @@
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.Startup;
   import org.jboss.seam.contexts.Context;
  +import org.jboss.seam.contexts.Lifecycle;
   import org.jboss.seam.contexts.WebSessionContext;
  +import org.jboss.seam.core.Manager;
   import org.jboss.seam.log.Log;
   import org.jboss.seam.security.Identity;
   import org.jboss.seam.security.NotLoggedInException;
  @@ -152,6 +156,7 @@
            {
               identity.setUsername(username);
               identity.setPassword(password);
  +            identity.authenticateNextRequest();
            }         
         }
         
  @@ -204,8 +209,10 @@
            }
            
            identity.setUsername(headerMap.get("username"));
  +         identity.authenticateNextRequest();
   
            DigestRequest digestRequest = new DigestRequest();
  +         digestRequest.setHttpMethod(request.getMethod());
            digestRequest.setSystemRealm(realm);
            digestRequest.setRealm(headerMap.get("realm"));         
            digestRequest.setKey(key);
  @@ -220,6 +227,7 @@
            {
               digestRequest.validate();
               ctx.set(DigestRequest.DIGEST_REQUEST, digestRequest);
  +            authenticate(request, identity);
            }
            catch (DigestValidationException ex)
            {
  @@ -229,6 +237,11 @@
               
               if (ex.isNonceExpired()) nonceExpired = true;
            }            
  +         catch (Exception ex)
  +         {
  +            log.error("Error authenticating: " + ex.getMessage());
  +            requireAuth = true;
  +         }
         }
         
         if (!identity.isLoggedIn() && !identity.isCredentialsSet())
  @@ -249,7 +262,7 @@
            requireAuth = true;
         }      
         
  -      if (requireAuth || !identity.isLoggedIn())
  +      if (requireAuth && !identity.isLoggedIn())
         {
            long expiryTime = System.currentTimeMillis() + (nonceValiditySeconds * 1000);
            
  @@ -270,6 +283,32 @@
         }             
      }
      
  +   private void authenticate(HttpServletRequest request, Identity identity)
  +      throws Exception
  +   {
  +      try
  +      {
  +         HttpSession session = request.getSession(true);
  +         Lifecycle.setPhaseId(PhaseId.INVOKE_APPLICATION);
  +         Lifecycle.setServletRequest(request);
  +         Lifecycle.beginRequest(getServletContext(), session, request);
  +         Manager.instance().restoreConversation( request.getParameterMap() );
  +         Lifecycle.resumeConversation(session);
  +         Manager.instance().handleConversationPropagation( request.getParameterMap() );   
  +         identity.authenticate();
  +      }
  +      catch (Exception ex) 
  +      {
  +         Lifecycle.endRequest();
  +         throw ex;
  +      }      
  +      finally
  +      {
  +         Lifecycle.setServletRequest(null);
  +         Lifecycle.setPhaseId(null);
  +      }      
  +   }
  +   
      private String[] split(String toSplit, String delimiter) 
      {
         if (delimiter.length() != 1) {
  
  
  



More information about the jboss-cvs-commits mailing list