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