cancel
Showing results for 
Search instead for 
Did you mean: 

WEBDAV Problem

dozyarmadillo
Champ on-the-rise
Champ on-the-rise
Hi there

I've managed to get NTLM working for the web client and CIFS after implementing the configuration described at http://wiki.alfresco.com/wiki/Configuring_NTLM. Unfortunately, WEBDAV doesn't work for me - which is a shame as I would like to demo Alfresco to my bosses. I get the error "Transaction must be active and synchronization is required". Here's the relevant snippet from the log file:

INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,796 DEBUG [smb.protocol.auth] Trying address 192.168.0.2
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,812 DEBUG [smb.protocol.auth] Connected to address 192.168.0.2
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,812 DEBUG [smb.protocol.auth] Connected session, protocol : TCP/IP NetBIOS
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,812 DEBUG [smb.protocol.auth] SessionFactory: Negotiated SMB dialect NT LM 0.12
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,812 DEBUG [webdav.auth.NTLMAuthenticationFilter] Sending NTLM type2 to client - [Type2:0x80000203,Target:CHEEKY,Ch:aa1fbce0ab486102]
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,812 DEBUG [webdav.auth.NTLMAuthenticationFilter] Received type3 [Type3:,LM:688fea1ce762deccdae22df971b976a329f776578965af87,NTLM:688fea1ce762deccdae22df971b976a329f776578965af87,Dom:GEEKNET,User:geek,Wks:KRONOS]
INFO   | jvm 1    | 2007/03/13 00:45:26 | 00:45:26,828 ERROR [[localhost].[/alfresco].[WebDAV]] Servlet.service() for servlet WebDAV threw exception
INFO   | jvm 1    | 2007/03/13 00:45:26 | org.alfresco.error.AlfrescoRuntimeException: Transaction must be active and synchronization is required
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.transaction.AlfrescoTransactionSupport.registerSynchronizations(AlfrescoTransactionSupport.java:371)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getSynchronization(AlfrescoTransactionSupport.java:356)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.transaction.AlfrescoTransactionSupport.bindDaoService(AlfrescoTransactionSupport.java:210)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.transaction.TransactionalDaoInterceptor.invoke(TransactionalDaoInterceptor.java:66)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at $Proxy1.getNode(Unknown Source)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.node.db.DbNodeServiceImpl.exists(DbNodeServiceImpl.java:160)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at sun.reflect.GeneratedMethodAccessor190.invoke(Unknown Source)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at java.lang.reflect.Method.invoke(Method.java:585)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at $Proxy2.exists(Unknown Source)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at sun.reflect.GeneratedMethodAccessor190.invoke(Unknown Source)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at java.lang.reflect.Method.invoke(Method.java:585)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:227)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at $Proxy3.exists(Unknown Source)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.security.person.PersonServiceImpl.getPersonOrNull(PersonServiceImpl.java:202)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.security.person.PersonServiceImpl.getPerson(PersonServiceImpl.java:155)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticatePassthru(NTLMAuthenticationComponentImpl.java:840)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticate(NTLMAuthenticationComponentImpl.java:521)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter.processType3(NTLMAuthenticationFilter.java:730)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:414)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:833)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
INFO   | jvm 1    | 2007/03/13 00:45:26 |    at java.lang.Thread.run(Thread.java:595)

After this error is thrown CIFS stops working as well 😞

Has anyone got any suggestions?

Cheers

Mark

PS
I've not got user import enabled and I'm using the Alfresco authenticator.
7 REPLIES 7

burner
Champ in-the-making
Champ in-the-making
Hi how did  you get NTLM running?

I get this stupid error with synchronized…

Can you send me your configuration please?

Thanx

Tomek

burner
Champ in-the-making
Champ in-the-making
Hi how did  you get NTLM running?

I get this stupid error with synchronized…

Can you send me your configuration please?

Thanx

Tomek

dozyarmadillo
Champ on-the-rise
Champ on-the-rise
Here you go.


web.xml:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
   <display-name>Alfresco Web Client</display-name>
   
   <description>Alfresco Web Client</description>
  
   <context-param>
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
      <param-value>server</param-value>
   </context-param>

   <context-param>
      <param-name>javax.faces.CONFIG_FILES</param-name>
      <param-value>/WEB-INF/faces-config-app.xml,/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-navigation.xml,/WEB-INF/faces-config-common.xml,/WEB-INF/faces-config-repo.xml,/WEB-INF/faces-config-wcm.xml,/WEB-INF/faces-config-custom.xml,/WEB-INF/faces-config-enterprise.xml</param-value>
   </context-param>

   <context-param>
      <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
      <param-value>true</param-value>
   </context-param>
   
   <context-param>
      <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
      <param-value>false</param-value>
      <description>This is an EXPERIMENTAL feature, so leave it off for now!</description>
   </context-param>
  
   <context-param>
      <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
      <param-value>false</param-value>
      <description>Stop MyFaces from Serializing the state to the session</description>
   </context-param>

    <!– TODO: Change this to false for production –>
    <context-param>
        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
        <param-value>true</param-value>
        <description>
            If true, rendered HTML code will be formatted, so that it is "human readable".
            i.e. additional line separators and whitespace will be written, that do not
            influence the HTML code.
            Default: "true"
        </description>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
        <param-value>false</param-value>
        <description>
            If true, a javascript function will be rendered that is able to restore the
            former vertical scroll on every request. Convenient feature if you have pages
            with long lists and you do not want the browser page to always jump to the top
            if you trigger a link or button action that stays on the same page.
            Default: "false"
        </description>
    </context-param>

   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
         classpath:alfresco/application-context.xml
         classpath:alfresco/web-client-application-context.xml
         classpath:alfresco/web-scripts-application-context.xml
         classpath:web-services-application-context.xml
      </param-value>
      <description>Spring config file locations</description>
   </context-param>

   <filter>
      <filter-name>Authentication Filter</filter-name>
      <!–
      <filter-class>org.alfresco.web.app.servlet.AuthenticationFilter</filter-class>
      –>
     
      <!– For Novell IChain support use the following filter –>
      <!– (Enterprise version only)                          –>
      <!–
        <filter-class>org.alfresco.web.app.servlet.NovellIChainsHTTPRequestAuthenticationFilter</filter-class>
      –>
     
      <!– For NTLM authentication support use the following filter –>
      <!– (Enterprise version only)                                –>
        <filter-class>org.alfresco.web.app.servlet.NTLMAuthenticationFilter</filter-class>

   </filter>

   <filter>
      <filter-name>WebDAV Authentication Filter</filter-name>
      <!–
      <filter-class>org.alfresco.repo.webdav.auth.AuthenticationFilter</filter-class>
      –>
     
      <!– For NTLM authentication support use the following filter –>
      <!– (Enterprise version only)                                –>
        <filter-class>org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter</filter-class>
   </filter>

   <filter>
      <filter-name>Admin Authentication Filter</filter-name>
      <filter-class>org.alfresco.web.app.servlet.AdminAuthenticationFilter</filter-class>
   </filter>

   <filter-mapping>
      <filter-name>Authentication Filter</filter-name>
      <url-pattern>/faces/*</url-pattern>
   </filter-mapping>
  
   <!– For NTLM authentication support enable the following mapping –>
   <!– (Enterprise version only)                                    –>

   <filter-mapping>
      <filter-name>Authentication Filter</filter-name>
      <url-pattern>/navigate/*</url-pattern>
   </filter-mapping>
<!–  
   <filter-mapping>
      <filter-name>Authentication Filter</filter-name>
      <url-pattern>/command/*</url-pattern>
   </filter-mapping>

   <filter-mapping>
      <filter-name>Authentication Filter</filter-name>
      <url-pattern>/template/*</url-pattern>
   </filter-mapping>
   –>
     
   <filter-mapping>
      <filter-name>WebDAV Authentication Filter</filter-name>
      <url-pattern>/webdav/*</url-pattern>
   </filter-mapping>
  
   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/admin/*</url-pattern>
   </filter-mapping>

   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/categories/*</url-pattern>
   </filter-mapping>
  
   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/groups/*</url-pattern>
   </filter-mapping>
  
   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/users/delete-user.jsp</url-pattern>
   </filter-mapping>
  
   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/users/users.jsp</url-pattern>
   </filter-mapping>
  
   <filter-mapping>
      <filter-name>Admin Authentication Filter</filter-name>
      <url-pattern>/faces/jsp/dialog/system-info.jsp</url-pattern>
   </filter-mapping>

   <listener>
      <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
   </listener>
  
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
  
   <listener>
      <listener-class>org.alfresco.web.app.ContextListener</listener-class>
   </listener>
  
   <!– Faces Servlet –>
   <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
  
   <servlet>
      <servlet-name>uploadFile</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.UploadFileServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>downloadContent</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.DownloadContentServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>uploadContent</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.UploadContentServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>guestDownloadContent</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.GuestDownloadContentServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>guestTemplateContent</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.GuestTemplateContentServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>externalAccess</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.ExternalAccessServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>templateContent</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.TemplateContentServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>commandServlet</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.CommandServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>ajaxServlet</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.ajax.AjaxServlet</servlet-class>
   </servlet>
  
   <servlet>
      <servlet-name>axis</servlet-name>
      <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
      <load-on-startup>5</load-on-startup>
   </servlet>
  
   <servlet>
      <servlet-name>WebDAV</servlet-name>
      <servlet-class>org.alfresco.repo.webdav.WebDAVServlet</servlet-class>
      <init-param>
         <param-name>store</param-name>
         <param-value>workspace://SpacesStore</param-value>
      </init-param>
      <init-param>
         <param-name>rootPath</param-name>
         <param-value>/app:company_home</param-value>
      </init-param>
      <load-on-startup>5</load-on-startup>
   </servlet>
     
   <servlet>
      <servlet-name>apiServlet</servlet-name>
      <servlet-class>org.alfresco.web.scripts.WebScriptServlet</servlet-class>
   </servlet>

   <servlet>
      <servlet-name>proxyServlet</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.HTTPProxyServlet</servlet-class>
   </servlet>
           
   <servlet>
      <servlet-name>workflowDefinitionImageServlet</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.WorkflowDefinitionImageServlet</servlet-class>
   </servlet>

   <servlet>
      <servlet-name>JBPMDeployProcessServlet</servlet-name>
      <servlet-class>org.alfresco.web.app.servlet.JBPMDeployProcessServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>/faces/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>uploadFile</servlet-name>
      <url-pattern>/uploadFileServlet</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>downloadContent</servlet-name>
      <url-pattern>/download/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>uploadContent</servlet-name>
      <url-pattern>/upload/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>guestDownloadContent</servlet-name>
      <url-pattern>/guestDownload/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>guestTemplateContent</servlet-name>
      <url-pattern>/guestTemplate/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>externalAccess</servlet-name>
      <url-pattern>/navigate/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>templateContent</servlet-name>
      <url-pattern>/template/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>commandServlet</servlet-name>
      <url-pattern>/command/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>ajaxServlet</servlet-name>
      <url-pattern>/ajax/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>axis</servlet-name>
      <url-pattern>/api/*</url-pattern>
   </servlet-mapping>
  
   <servlet-mapping>
      <servlet-name>WebDAV</servlet-name>
      <url-pattern>/webdav/*</url-pattern>
   </servlet-mapping>

   <servlet-mapping>
      <servlet-name>apiServlet</servlet-name>
      <url-pattern>/service/*</url-pattern>
   </servlet-mapping>

   <servlet-mapping>
      <servlet-name>proxyServlet</servlet-name>
      <url-pattern>/proxy</url-pattern>
   </servlet-mapping>

   <servlet-mapping>
      <servlet-name>JBPMDeployProcessServlet</servlet-name>
      <url-pattern>/jbpm/deployprocess</url-pattern>
   </servlet-mapping>

   <servlet-mapping>
      <servlet-name>workflowDefinitionImageServlet</servlet-name>
      <url-pattern>/workflowdefinitionimage/*</url-pattern>
   </servlet-mapping>

   <session-config>
      <session-timeout>60</session-timeout>
   </session-config>
  
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <error-page>
      <exception-type>java.lang.Exception</exception-type>
      <location>/jsp/error.jsp</location>
   </error-page>
    
</web-app>

ntlm-authentication-context.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!–
    <bean id="authenticationDao" class="org.alfresco.repo.security.authentication.ntlm.NullMutableAuthenticationDao" />
    –>

    <bean id="authenticationDao" class="org.alfresco.repo.security.authentication.ntlm.NullMutableAuthenticationDao">
    <!–
      <property name="nodeService">
        <ref bean="nodeService" />
      </property>
      –>
    </bean>

    <!– The authentication component.                                      –>

    <!– Use the passthru authentication component to authenticate using    –>
    <!– user accounts on one or more Windows servers.                      –>
   
    <!– Properties that specify the server(s) to use for passthru          –>
    <!– authentication :-                                                  –>
    <!–   useLocalServer   use the local server for authentication         –>
    <!–   domain           use domain controllers from the specified domain–>
    <!–   servers          comma delimted list of server addresses or      –>
    <!–                    names                                           –>

    <!–
    <bean id="authenticationComponentImpl" class="org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl">
        <property name="useLocalServer">
            <value>true</value>
        </property>
        <property name="personService">
            <ref bean="personService" />
        </property>
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="guestAccess">
            <value>false</value>
        </property>
    </bean>
  –>
    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl">
        <property name="domain">
            <value>GEEKNET</value>
        </property>
        <property name="useLocalServer">
            <value>false</value>
        </property>
        <property name="personService">
            <ref bean="personService" />
        </property>
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="guestAccess">
            <value>false</value>
        </property>
    </bean>

</beans>

file-servers-custom.xml:

<alfresco-config area="file-servers">

   <!– To override the default Alfresco filesystem use replace="true", to –>
   <!– add additional filesystems remove the replace="true" attribute     –>
  
   <config evaluator="string-compare" condition="Filesystems" replace="true">
      <filesystems>

         <filesystem name="Alfresco">
            <store>workspace://SpacesStore</store>
            <rootPath>/app:company_home</rootPath>

            <!– Add a URL file to each folder that links back to the web client –>
            <urlFile>
               <filename>__Alfresco.url</filename>
               <webpath>http://cheeky/alfresco/</webpath>
            </urlFile>

            <!– Mark locked files as offline –>
            <offlineFiles/>

            <!– Desktop actions –>

            <desktopActions>
               <global>
                  <path>alfresco/desktop/Alfresco.exe</path>
                  <webpath>http://cheeky/alfresco/</webpath>
               </global>
               <action>
                  <class>org.alfresco.filesys.smb.server.repo.desk.CheckInOutDesktopAction</class>
                  <name>CheckInOut</name>
                  <filename>__CheckInOut.exe</filename>
               </action>
               <action>
                  <class>org.alfresco.filesys.smb.server.repo.desk.JavaScriptDesktopAction</class>
                  <name>JavaScriptURL</name>
                  <filename>__ShowDetails.exe</filename>
                  <script>alfresco/desktop/showDetails.js</script>
                  <attributes>anyFiles</attributes>
                  <preprocess>copyToTarget</preprocess>
               </action>

            </desktopActions>

<!–
            <accessControl default="Write">
               <user name="admin" access="Write"/>
               <address subnet="90.1.0.0" mask="255.255.0.0" access="Write"/>
            </accessControl>
–>
         </filesystem>
       
       <!– AVM virtualization view of all stores/versions for WCM –>
         <avmfilesystem name="AVM">
            <virtualView/>
         </avmfilesystem>
       
      </filesystems>
   </config>

   <!– Allow guest access to file systems –>
   <config evaluator="string-compare" condition="Filesystem Security">

      <authenticator type="alfresco">
         <!–
         <allowGuest/>
         –>
         <!– Map any unknown user to guest –>
         <!–
         <mapUnknownUserToGuest/>
         –>
      </authenticator>

   </config>

</alfresco-config>

custom-authority-services-context:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
    <bean id="authorityService" class="org.alfresco.repo.security.authority.AuthorityServiceImpl">
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="personService">
            <ref bean="personService" />
        </property>
        <property name="nodeService">
            <ref bean="nodeService" />
        </property>
        <property name="authorityDAO">
            <ref bean="authorityDAO" />
        </property>
        <property name="permissionServiceSPI">
            <ref bean="permissionServiceImpl" />
        </property>
        <property name="adminUsers">
            <set>
             <value>geek</value> <!– add an NTLM user as an Administrator –>
          </set>
        </property>
    </bean>
</beans>
Please post here if you manage to get CIFS + NTLM working.

Cheers

burner
Champ in-the-making
Champ in-the-making
Hi thank you for posting but it dont work!I had it configured like you except iused the server daddres in the ntlm bean instead of the domain.
But i get these errors:

net.sf.acegisecurity.AuthenticationServiceException: Failed to open passthru auth session

Details verbergen

net.sf.acegisecurity.AuthenticationServiceException: Failed to open passthru auth session
at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticatePassthru(NTLMAuthenticationComponentImpl.java:764)
at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticate(NTLMAuthenticationComponentImpl.java:521)
at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.processType1(NTLMAuthenticationFilter.java:515)
at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:393)
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)

17:49:05,010 DEBUG [app.servlet.NTLMAuthenticationFilter] New NTLM auth request from 127.0.0.1 (127.0.0.1:1829)
17:49:05,010 DEBUG [app.servlet.NTLMAuthenticationFilter] Received type1 [Type1:0xa208b207,Domain:HVKOCHSTR01,Wks:KASKE]
17:49:05,010 ERROR [[localhost].[/alfresco].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
net.sf.acegisecurity.AuthenticationServiceException: Failed to open passthru auth session
        at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticatePassthru(NTLMAuthenticationComponentImpl.java:764)
        at org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl.authenticate(NTLMAuthenticationComponentImpl.java:521)
        at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.processType1(NTLMAuthenticationFilter.java:515)
        at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:393)
        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)

I just dont know what to do!!!

dozyarmadillo
Champ on-the-rise
Champ on-the-rise
I'm new to this myself so I won't attempt to troubleshoot this as I'll probably end up giving you duff information. I'm sure that others will be able to set you on the right path. The above config seemed to work for me. I am running Alfresco on WinXP SP2. It was a relatively recent checkout from Alfresco subversion (maybe a week or two old - it's 2.1 I think).

I ended up ditching NTLM altogether as I wasn't able to resolve the issue with WEBDAV (pity as SSO would be nice). I got Kerberos authentication to work though by following the Wiki article on it. I'm using Passthru for CIFS using instructions from the relevant wiki.

Good luck

Mark

burner
Champ in-the-making
Champ in-the-making
hi hm can you postthe Kerberos config.

Maybe you have chcanged some other files too not only these ones.

Thank you.

minhkamayie
Champ in-the-making
Champ in-the-making
Hi all,

With regards to the WebDAV auth exception above, it appears the 2.0.1 version of the org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter was not updated to use the proxied "AuthenticationComponent"; instead it uses "authenticationComponent" (deliberate lowe case) which is not transaction managed.

I've created a JIRA issue for this since a quick look through the database didn't reveal an existing one: http://issues.alfresco.com/browse/AR-1658

A quick temporary fix we've done is to create our own class based Alfresco's filter in which we use the transaction enabled "AuthenticationService" and "AuthenticationComponent".