[jcifs] NtlmServlet Authentication Problem

Patrick Wehinger Patrick.Wehinger at gmx.net
Tue Jun 8 08:31:40 GMT 2004


Hi!

I'm trying to do NtlmServlet authentication (cant use the filter for 
various reasons here), but i can't figure it out.
I use jcifs-0.9.1 and have a servlet extending the NtlmServlet:

public class MyNtlmServlet extends NtlmServlet {

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        //Config.setProperty("jcifs.smb.client.domain","KOGIT");
        Config.setProperty("jcifs.http.domainController","kogit-win2s");
        //Config.setProperty("jcifs.smb.client.username","10003");
        //Config.setProperty("jcifs.smb.client.password","password");
        Config.setProperty("jcifs.smb.client.soTimeout", "300000" );
        Config.setProperty("jcifs.netbios.cachePolicy", "600" );
        Config.setProperty("jcifs.resolveOrder","DNS,WINS");
        Config.setProperty("jcifs.netbios.wins","192.168.0.223");
        Config.setProperty("jcifs.util.loglevel","3");
        Config.setProperty("jcifs.http.loadBalance","false");
        Config.setProperty("jcifs.http.enableBasic","false");

        System.out.println("->MyNtlmServlet.init");
    }

    public void doGet(HttpServletRequest req, HttpServletResponse res)
throws
IOException, ServletException {
        System.out.println("->doGet");

        System.out.println("calling super");
        super.service(req, res);

        HttpSession session = req.getSession();
        String user = (String)session.getAttribute("ntlmuser");

        System.out.println("->" + user);

    }
}


I tried various settings for domain and domainController but i end up 
getting either a StackOverflow on super.service(req,res) or this:

jcifs.smb.SmbException: An error occured sending the request.
java.io.IOException: Failed to establish session with 
kogit-win2s/192.168.0.223
    at jcifs.smb.SmbTransport.ensureOpen(SmbTransport.java:290)
    at jcifs.smb.SmbTransport.send(SmbTransport.java:602)
    at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
    at jcifs.smb.SmbSession.getChallenge(SmbSession.java:59)
    at org.apache.jsp.user.NTLM_jsp._jspService(NTLM_jsp.java:92)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
    at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
    at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
    at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
    at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
    at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
    at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
    at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
    at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
    at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
    at java.lang.Thread.run(Thread.java:534)

    jcifs.smb.SmbTransport.send(SmbTransport.java:633)
    jcifs.smb.SmbTransport.negotiate(SmbTransport.java:847)
    jcifs.smb.SmbSession.getChallenge(SmbSession.java:59)
    org.apache.jsp.user.NTLM_jsp._jspService(NTLM_jsp.java:92)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)



I guess i'm doing it totally wrong, can anyone who successfully used the 
NtlmServlet please post an example servlet?

Greetings,
Patrick


More information about the jcifs mailing list