Update of 
/var/cvs/contributions/CMSContainer_Modules/knownvisitor-ntlm/src/java/com/finalist/cmsc/knownvisitor/ntlm
In directory 
james.mmbase.org:/tmp/cvs-serv13639/knownvisitor-ntlm/src/java/com/finalist/cmsc/knownvisitor/ntlm

Modified Files:
      Tag: b1_5
        NtlmKnownVisitorModule.java NtlmVisitorFilter.java 
Log Message:
CMSC-1194 NtlmVisitorFilter for Almere has code which is not in CVS

Improved login performance


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/knownvisitor-ntlm/src/java/com/finalist/cmsc/knownvisitor/ntlm
See also: http://www.mmbase.org/jira/browse/CMSC-1194


Index: NtlmKnownVisitorModule.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/knownvisitor-ntlm/src/java/com/finalist/cmsc/knownvisitor/ntlm/NtlmKnownVisitorModule.java,v
retrieving revision 1.6.2.2
retrieving revision 1.6.2.3
diff -u -b -r1.6.2.2 -r1.6.2.3
--- NtlmKnownVisitorModule.java 22 Jan 2009 14:33:27 -0000      1.6.2.2
+++ NtlmKnownVisitorModule.java 27 Jan 2009 10:34:27 -0000      1.6.2.3
@@ -5,19 +5,19 @@
 import javax.naming.*;
 import javax.naming.directory.*;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import jcifs.smb.NtlmPasswordAuthentication;
-
 import com.finalist.cmsc.knownvisitor.KnownVisitorModule;
+import com.finalist.cmsc.knownvisitor.Visitor;
 import com.finalist.cmsc.mmbase.PropertiesUtil;
 
 public class NtlmKnownVisitorModule extends KnownVisitorModule {
    static Log log = LogFactory.getLog(NtlmKnownVisitorModule.class);
 
-   private static final String SESSION_ATTRIBUTE = "NtlmVisitor";
+   public static final String SESSION_ATTRIBUTE = "knownVisitor";
 
    public static final String PROPERTY_ENABLED = "knownvisitor-ntlm.enabled";
    public static final String PROPERTY_DOMAIN_CONTROLLER = 
"knownvisitor-ntlm.domaincontroller";
@@ -41,8 +41,13 @@
 
 
    @Override
-   public NtlmVisitor getVisitor(HttpServletRequest request) {
-      return (NtlmVisitor) 
request.getSession().getAttribute(NtlmKnownVisitorModule.SESSION_ATTRIBUTE);
+   public Visitor getVisitor(HttpServletRequest request) {
+      HttpSession ssn = request.getSession(false);
+      return (ssn != null ? (Visitor) 
ssn.getAttribute(NtlmKnownVisitorModule.SESSION_ATTRIBUTE) : null);
+   }
+
+   public void setVisitor(HttpServletRequest request, Visitor visitor) {
+      request.getSession().setAttribute(SESSION_ATTRIBUTE, visitor);
    }
 
 
@@ -51,16 +56,9 @@
       KnownVisitorModule.setInstance(this);
    }
 
+   public void readLdapInfo(Visitor v) {
+      NtlmVisitor visitor = (NtlmVisitor) v;
 
-   public void justLoggedIn(HttpServletRequest request, 
NtlmPasswordAuthentication ntlm) {
-      NtlmVisitor visitor = new NtlmVisitor();
-      visitor.setIdentifier(ntlm.getUsername());
-      readLdapInfo(visitor);
-      
request.getSession().setAttribute(NtlmKnownVisitorModule.SESSION_ATTRIBUTE, 
visitor);
-   }
-
-
-   public void readLdapInfo(NtlmVisitor visitor) {
       DirContext ctx;
       String query = "(" + getProperty(PROPERTY_FIELD_USERNAME) + "=" + 
visitor.getIdentifier() + ")";
       String searchDN = getProperty(PROPERTY_SEARCHDN);


Index: NtlmVisitorFilter.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/knownvisitor-ntlm/src/java/com/finalist/cmsc/knownvisitor/ntlm/NtlmVisitorFilter.java,v
retrieving revision 1.7.2.2
retrieving revision 1.7.2.3
diff -u -b -r1.7.2.2 -r1.7.2.3
--- NtlmVisitorFilter.java      22 Jan 2009 14:33:27 -0000      1.7.2.2
+++ NtlmVisitorFilter.java      27 Jan 2009 10:34:27 -0000      1.7.2.3
@@ -56,7 +56,7 @@
       final HttpServletRequest req = (HttpServletRequest) request;
       final HttpServletResponse resp = (HttpServletResponse) response;
 
-      if (isEnabled()) {
+      if (isEnabled() && !alreadyLoggedIn(req)) {
          List<String> exceptions = getIpExceptions();
          if (!exceptions.isEmpty()) {
             String clientIp = req.getHeader("X-Forwarded-For");
@@ -69,7 +69,6 @@
                return;
             }
          }
-
          if (!negotiate(req, resp, false)) {
             return;
          }
@@ -78,6 +77,16 @@
       chain.doFilter(req, resp);
    }
 
+   protected boolean alreadyLoggedIn(HttpServletRequest req) {
+      return KnownVisitorModule.getInstance().getVisitor(req) != null;
+   }
+
+   public void justLoggedIn(HttpServletRequest request, 
NtlmPasswordAuthentication ntlm) {
+      NtlmVisitor visitor = new NtlmVisitor();
+      visitor.setIdentifier(ntlm.getUsername());
+      ((NtlmKnownVisitorModule) 
KnownVisitorModule.getInstance()).readLdapInfo(visitor);
+      ((NtlmKnownVisitorModule) 
KnownVisitorModule.getInstance()).setVisitor(request, visitor);
+   }
 
    /**
     * Negotiate password hashes with MSIE clients using NTLM SSP
@@ -168,7 +177,7 @@
             return true;
          }
          req.getSession().setAttribute("NtlmHttpAuth", ntlm);
-         ((NtlmKnownVisitorModule) 
KnownVisitorModule.getInstance()).justLoggedIn(req, ntlm);
+         justLoggedIn(req, ntlm);
       }
       else {
          if (!skipAuthentication) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to