[jcifs] jcifs.smb.SmbException: Unverifiable signature:SMUSTF<1C>/202.161.42.5

Morten.Hattesen at tietoenator.com Morten.Hattesen at tietoenator.com
Tue Mar 15 08:44:49 GMT 2005


I had a similar problem recently, with "Unverifiable signature", and
discovered, that in spite of setting jcifs.smb.client.username and
jcifs.smb.client.password as init-param to the
jcifs.http.NtlmHttpFilter, it would occasionally make connections using
the GUEST account.

I did discover the cause, and a work-around.

When Tomcat shuts down and reloads it persists all session attributes by
default. One of these attributes is the user attribute object
(jcifs.smb.NtlmPasswordAuthentication), which initializes its
DEFAULT_USERNAME field, using default user "GUEST", since it has not yet
loaded the jcifs configuration values from the filter parameters
(jcifs.smb.client.username and jcifs.smb.client.password) in web.xml.

To verify that this is the case, try setting the filter parameter...
<init-param>
<param-name>jcifs.util.loglevel</param-name>
<param-value>3</param-value>
</init-param>
... and check the log for SMB messages that contain the string "GUEST".

The problem, really, is the way jcifs.smb.NtlmPasswordAuthentication
initializes its configuration values on class loading, rather than
lazily on first use, but trick below will prevent the class from being
loaded, until the configuration has been loaded via the filter
init-param's.

Try disabling session attribute persistence by adding a Manager element
in your Tomcat configuration file:
<Context>
...
<Manager pathname=""/> <!-- disable the session persistence -->
</Context>

An alternate solution would be to include the jcifs.* properties in
System.properties rather than as filter init-param's. This would allow
proper initialization.

Regards,

Morten Hattesen

> Sent: 14. marts 2005 09:50
> To: jcifs at lists.samba.org
> Subject: [jcifs] jcifs.smb.SmbException: Unverifiable 
> signature:SMUSTF<1C>/202.161.42.5
> 
> I'm using jcifs-1.1.9 for HTTP NTLM Auhentication.Am using 
> Tomcat to run my application.
>  
> Getting the following error in my log files.The error occurs 
> once every couple logons.
>  
> Please help me to fix this problem.
>  
> Regards,
> Murali
>  
> Exception Message:
> HTTP Status 500 -
> --------------------------------------------------------------
> ------------------
> type Exception report
> message
> description The server encountered an internal error () that 
> prevented it from fulfilling this request.
> exception
> jcifs.smb.SmbException: Unverifiable signature: 
> SMUSTF<1C>/202.161.42.5  at 
> jcifs.smb.SmbTransport.send(SmbTransport.java:674)
>  at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:296)
>  at jcifs.smb.SmbSession.send(SmbSession.java:253)
>  at jcifs.smb.SmbTree.treeConnect(SmbTree.java:134)
>  at jcifs.smb.SmbSession.logon(SmbSession.java:184)
>  at jcifs.smb.SmbSession.logon(SmbSession.java:177)
>  at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:155)
>  at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(ApplicationFilterChain.java:213)
>  at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterChain.java:193)
>  at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.java:256)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:643)
>  at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>  at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.java:191)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:643)
>  at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>  at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at 
> org.apache.catalina.core.StandardContext.invoke(StandardContex
> t.java:2422)
>  at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:180)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:643)
>  at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
> spatcherValve.java:171)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:641)
>  at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:163)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:641)
>  at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>  at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java:174)
>  at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
eContext.invokeNext(StandardPipeline.java:643)
>  at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>  at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at 
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.
> java:199)
>  at 
> org.apache.coyote.http11.Http11Processor.process(Http11Process
> or.java:828)
>  at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
r.processConnection(Http11Protocol.java:700)
>  at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
> nt.java:584)
>  at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:683)
>  at java.lang.Thread.run(Thread.java:534)
>  
> --------------------------------------------------------------
> ------------------
> Apache Tomcat/4.1.30
> 
> ________________________________
> 
> Do you Yahoo!?
> Yahoo! Small Business - Try our new resources site! 
> <http://us.rd.yahoo.com/evt=31637/*http://smallbusiness.yahoo.
com/resources/>  
> 


More information about the jcifs mailing list