cancel
Showing results for 
Search instead for 
Did you mean: 

NTLM Configuration - Required authentication mode Error

gennaromonaco
Champ in-the-making
Champ in-the-making
I've followed all of the steps in the configuration of NTLM at http://wiki.alfresco.com/wiki/Configuring_NTLM

I get the following error in my alfresco.log when I start Tomcat.
What is meant by "Required authentication mode not available"?
Any ideas?…

13:49:46,816 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco-2]] Exception starting filter Authentication Filter
javax.servlet.ServletException: Required authentication mode not available
        at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.init(NTLMAuthenticationFilter.java:188)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)
        at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:304)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:77)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3634)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
        at org.apache.catalina.core.StandardService.start(StandardService.java:450)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

Thanks in advance for any suggestions!
8 REPLIES 8

gennaromonaco
Champ in-the-making
Champ in-the-making
Also, I'm using Alfresco 2.0.

gennaromonaco
Champ in-the-making
Champ in-the-making
In file-servers.xml

<config evaluator="string-compare" condition="Filesystem Security">
   <authenticator type="passthru">
      <Server>10.4.9.10</Server>
      <!–
      <allowGuest/>
      <mapUnknownUserToGuest/>
      –>
   </authenticator>
</config>

gennaromonaco
Champ in-the-making
Champ in-the-making
I found in the code where the Exception is thrown, but does anyone know how to get the NTLMMode.PASS_THROUGH to be true?

Is that a setting in some file somewhere?

if ( m_authComponent.getNTLMMode() != NTLMMode.MD4_PROVIDER &&
        m_authComponent.getNTLMMode() != NTLMMode.PASS_THROUGH)
{
    throw new ServletException("Required authentication mode not available");
}

alexander
Champ in-the-making
Champ in-the-making
What do you use for authenticationComponent?

gennaromonaco
Champ in-the-making
Champ in-the-making
I'm using
org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl

only I think that the issue has to do with a bug where NTLM and passthru are not working together.

If I use <authenticator type="alfresco"> instead of <authenticator type="passthru"> it seems to work fine. A bug is the cause I believe.

alexander
Champ in-the-making
Champ in-the-making
If you look at http://wiki.alfresco.com/wiki/Enterprise_Security_and_Authentication_Configuration#Compatibility_at_...  passthrough filesystem authenticator is not supported with NTLMAuthenticationComponentImpl.

It only supports LDAP and Kerberos. I suggest use "alfresco" filesystem authenticator, it works great for me.

gennaromonaco
Champ in-the-making
Champ in-the-making
… using "alfresco" instead of "passthru".
Thanks for pointing out that compatibility table.

Thanks so much!

hsantander
Champ in-the-making
Champ in-the-making
Hello

Is your config working properly with NTLM authentication trought the web client?

I got the CIFS authentication working properly, but I didn't with the web client, always got this error:
18:06:21,419 DEBUG [app.servlet.NTLMAuthenticationFilter] New NTLM auth request from 127.0.0.1 (127.0.0.1:52859)
18:06:21,437 DEBUG [app.servlet.NTLMAuthenticationFilter] Received type1 [Type1:0x88207,Domain:<NotSet>,Wks:<NotSet>]
18:06:21,470 DEBUG [app.servlet.NTLMAuthenticationFilter] Sending NTLM type2 to client - [Type2:0x203,Target:HSANTANDER_A,Ch:59fe059ab1c0c7f3]
18:06:21,476 DEBUG [app.servlet.NTLMAuthenticationFilter] Received type3 [Type3:,LM:a0921c05dd4997537c634f730e03d45e53e3f4c4becd004a,NTLM:a0921c05dd4997537c634f730e03d45e53e3f4c4becd004a,Dom:,User:sbh000,Wks:hsantander]
18:06:21,530 WARN  [orm.hibernate3.HibernateTransactionManager] Should roll back transaction but cannot - no transaction available
18:06:21,531 ERROR [[localhost].[/alfresco].[Faces Servlet]] Servlet.service() para servlet Faces Servlet lanzó excepción
java.lang.NullPointerException
        at org.alfresco.repo.security.authentication.InMemoryTicketComponentImpl.getTicket(InMemoryTicketComponentImpl.java:65)
        at org.alfresco.repo.security.authentication.AuthenticationServiceImpl.getCurrentTicket(AuthenticationServiceImpl.java:156)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:116)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:228)
        at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:166)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
        at $Proxy20.getCurrentTicket(Unknown Source)
        at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.processType3(NTLMAuthenticationFilter.java:769)
        at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:400)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Thanks