Alfresco 3.4b Explorer & Share - SSO CAS

cancel
Showing results for 
Search instead for 
Did you mean: 
pescobar
Member II

Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour à tous,

mon problème est le suivant : un log d'erreur dont je n'ai pas la moindre idée de la cause.

Contexte :
l'objectif est de pouvoir paramétrer CAS avec Alfresco Explorer & Share.
Pour ceci, j'ai suivi le wiki http://wiki.alfresco.com/wiki/Alfresco_With_mod_auth_cas.
A part deux problèmes non cités dans le wiki ( 1/ alfresco recherche les certificats dans /etc/ssl et non dans /etc/pki/tls, 2/ mettre le paramètre tomcatAuthentication = false dans le connecteur AJP), Alfresco Explorer marche à merveille mais pas Share.

J'ai ensuite fait la procédure pour Share : édition du fichier share-config-custom.xml, en décommentant l'endpoint.


<!–
        Overriding endpoints to reference an Alfresco server with external SSO enabled
        NOTE: If utilising a load balancer between web-tier and repository cluster, the "sticky
              sessions" feature of your load balancer must be used.
        NOTE: If alfresco server location is not localhost:8080 then also combine changes from the
              "example port config" section below.
        *Optional* keystore contains SSL client certificate + trusted CAs.
        Used to authenticate share to an external SSO system such as CAS
        Remove the keystore section if not required i.e. for NTLM.
   –>
  
   <config evaluator="string-compare" condition="Remote">
      <remote>
         <keystore>
             <path>alfresco/web-extension/alfresco-system.p12</path>
             <type>pkcs12</type>
             <password>alfresco-system</password>
         </keystore>
        
         <connector>
            <id>alfrescoCookie</id>
            <name>Alfresco Connector</name>
            <description>Connects to an Alfresco instance using cookie-based authentication</description>
            <class>org.springframework.extensions.webscripts.connector.AlfrescoConnector</class>
         </connector>
        
         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfrescoCookie</connector-id>
            <endpoint-url>http://alfresco-t-j2e1/alfresco/wcs</endpoint-url>
            <identity>user</identity>
            <external-auth>true</external-auth>
         </endpoint>
      </remote>
   </config>
De plus, j'ai bien généré un certificat, avec CN=alfresco-system, exporté dans le keystore alfresco-system.p12 avec mot de passe : alfresco-system.

Lorsque je lance Alfresco, dans catalina.out j'ai un GRAVE: Error filterStart. Dans le log localhost.2011-01-05.log, j'obtiens la trace suivante :

5 janv. 2011 14:46:56 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
5 janv. 2011 14:46:56 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
5 janv. 2011 14:46:56 org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
5 janv. 2011 14:46:57 org.apache.catalina.core.ApplicationContext log
INFO: Shutting down log4j
5 janv. 2011 14:47:04 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
5 janv. 2011 14:48:01 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
5 janv. 2011 14:48:10 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception au démarrage du filtre Authentication Filter
java.lang.SecurityException: Impossible de trouver une configuration de connexion
        at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at javax.security.auth.login.Configuration$3.run(Configuration.java:247)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:242)
        at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.LoginContext.init(LoginContext.java:234)
        at javax.security.auth.login.LoginContext.<init>(LoginContext.java:403)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.init(SSOAuthenticationFilter.java:246)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
        at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
        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:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.io.IOException: Impossible de trouver une configuration de connexion
        at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250)
        at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91)
        … 41 more
5 janv. 2011 14:48:10 org.apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)
5 janv. 2011 14:48:10 org.apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: destroy called
5 janv. 2011 14:48:10 org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
5 janv. 2011 14:48:11 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
5 janv. 2011 14:48:11 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Je ne vois pas du tout à quoi cela peut être dû.

Sachant que si je commente l'endpoint, j'ai par contre une erreur dans mon navigateur lorsque je tente d'accéder à Share (après login auprès de CAS) :


GRAVE: "Servlet.service()" pour la servlet Spring Surf Dispatcher Servlet a généré une exception
org.springframework.extensions.surf.exception.UserFactoryException: Unable to create user - failed to retrieve user metadata:
        at org.springframework.extensions.surf.support.AlfrescoUserFactory.loadUser(AlfrescoUserFactory.java:168)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:176)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:99)
        at org.springframework.extensions.surf.RequestContextUtil.initialiseUser(RequestContextUtil.java:202)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:106)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:53)
        at org.alfresco.web.site.SlingshotPageViewResolver.lookupPage(SlingshotPageViewResolver.java:57)
        at org.springframework.extensions.surf.mvc.PageViewResolver.canHandle(PageViewResolver.java:97)
        at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:370)
        at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:77)
        at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1091)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:301)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)

Précision : j'ai ajouté dans le dossier du extension/subsystem/Authentication, un dossier external qui contient 4 fichiers : 
external-authentication.properties
external-authentication-context.xml
external-filter.properties
external-filter-context.xml
tous avec les paramètres par défaut.

Pour l'instant, j'ai cherché mais je n'ai pas encore trouvé de réponse (peut-être attendre la suite ici –> http://issues.alfresco.com/jira/browse/ALF-2788). Les autres problèmes rencontrés dans cette procédure ne sont pas les mêmes.
Merci d'avance!

Version des composants :
Redhat 5.5 64bits
Alfresco 3.4b
CAS 3.3.5
Tomcat 6.0.26
Apache HTTP 2.2.3
8 Replies
pescobar
Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

j'ai avancé dans ma quête. J'avais oublié de commenter Kerberos dans share-config-custom.xml comme indiqué dans http://wiki.alfresco.com/wiki/Alfresco_With_mod_auth_cas dans la partie Fedoras Core 14 install notes - Dec 2010 :

On 3.4 community you will need to change the name for or remove the "Kerberos" condition in share-config-custom.xml. (If present share will try and use Kerberos in the Remote end point)

J'ai maintenant un autre problème, quand j'essaye d'atteindre Share (cette exception est affichée dans le navigateur et le log) :

GRAVE: "Servlet.service()" pour la servlet Spring Surf Dispatcher Servlet a généré une exception
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:295)
        at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:284)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:734)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:722)
        at com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:619)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:907)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:833)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:230)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
        at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:828)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2116)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:798)
        at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:602)
        at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:356)
        at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:290)
        at org.springframework.extensions.webscripts.connector.HttpConnector.call(HttpConnector.java:67)
        at org.springframework.extensions.webscripts.connector.AbstractConnector.call(AbstractConnector.java:67)
        at org.springframework.extensions.surf.support.AlfrescoUserFactory.loadUser(AlfrescoUserFactory.java:174)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:176)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:99)
        at org.springframework.extensions.surf.RequestContextUtil.initialiseUser(RequestContextUtil.java:203)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:107)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:54)
        at org.alfresco.web.site.SlingshotPageViewResolver.lookupPage(SlingshotPageViewResolver.java:57)
        at org.springframework.extensions.surf.mvc.PageViewResolver.canHandle(PageViewResolver.java:103)
        at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:370)
        at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:77)
        at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1091)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.challengeOrPassThrough(SSOAuthenticationFilter.java:587)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:378)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
10 janv. 2011 11:40:28 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet Spring Surf Dispatcher Servlet a généré une exception
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:295)
        at com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:284)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:734)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:722)
        at com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:619)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:907)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:833)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:230)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
        at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:828)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2116)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:798)
        at org.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:602)
        at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:356)
        at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:290)
        at org.springframework.extensions.webscripts.connector.HttpConnector.call(HttpConnector.java:67)
        at org.springframework.extensions.webscripts.connector.AbstractConnector.call(AbstractConnector.java:67)
        at org.springframework.extensions.surf.support.AlfrescoUserFactory.loadUser(AlfrescoUserFactory.java:174)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:176)
        at org.springframework.extensions.surf.support.AbstractUserFactory.initialiseUser(AbstractUserFactory.java:99)
        at org.springframework.extensions.surf.RequestContextUtil.initialiseUser(RequestContextUtil.java:203)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:107)
        at org.springframework.extensions.surf.RequestContextUtil.initRequestContext(RequestContextUtil.java:54)
        at org.alfresco.web.site.SlingshotPageViewResolver.lookupPage(SlingshotPageViewResolver.java:57)
        at org.springframework.extensions.surf.mvc.PageViewResolver.canHandle(PageViewResolver.java:103)
        at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:370)
        at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:77)
        at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1091)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.challengeOrPassThrough(SSOAuthenticationFilter.java:587)
        at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:378)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)

Cette fois je continue de regarder la liste des points d'attention. Mais pour l'instant, aucune différence entre ma conf et celle dans le wiki.

Merci d'avance pour l'aide!
pescobar
Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

c'est résolu!
Le problème ne venait pas du Broken Pipe (le BP voulait seulement dire qu'il y a un timeout, ne pas me demander plus je n'ai pas tout compris).

Le problème venait du certificat! LE test qu'il faut effectuer pour savoir si le certificat est reconnu, c'est dans la partie 7 du site http://wiki.alfresco.com/wiki/Alfresco_With_mod_auth_cas :
You might also want to ensure that CAS is also authenticating Alfresco Share's client certificate correctly. To do this, install alfresco-system.p12 into your browser, delete all your cookies and then navigate to snoop.jsp again. This time, you should see alfresco-system as the "Remote User" without even being prompted for a username and password.

If this is all working then you are ready to try out the Alfresco Explorer and Share applications at

http://your.host.com/alfresco and http://your.host.com/share

Remember to remove the alfresco-system certificate from your browser before you do so

If not, then carefully check all Apache HTTP Server and Tomcat log files, and set DEBUG logging in your CAS log4j.properties if necessary.

Mon certificat était bien signé, bien formé. C'était au niveau de la configuration d'Apache :
le wiki indique qu'il faut mettre SSLCACertificatePath /etc/pki/tls/certs/ dans le fichier ssl.conf. Si vous regardez dans la section Ubuntu Specific Issues, il est indiqué de mettre plutôt : SSLCACertificateFile /etc/ssl/certs/cacert.pem.
La deuxième solution est la bonne car sinon, le navigateur ne reconnait pas l'autorité de certification.

Donc n'oubliez pas de faire la partie 7. Si elle ne fonctionne pas, c'est qu'il y a un problème et vérifiez que vous avez bien suivi le wiki + les modifications des problèmes cités en dessous.

@+
jayjayecl
Active Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bravo pour la résolution autonome, et merci d'avoir tenu le sujet à jour pour aider d'autres utilisateurs à l'avenir !

Smiley Wink
blackbird27
Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Effectivement il faut commenté le passage kerberos, ce n'est pas indiqué dans http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems#Alfresco_Share_SSO_using_NTLM

Version : 3.4c
OS : Ubuntu server 10.04 32bits

Un grand merci !
pescobar
Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

précision sur cette méthode :
mod_auth_cas stocke le cookie sur le serveur. La seule information que contient un client (le navigateur) est le nom du cookie dans lequel il y a le ticket (le navigateur n'a pas accès à l'information du ticket directement).
Ce qui veut dire que si vous souhaitez mettre Alfresco & Share en SSO avec une autre application, il faut que l'autre application soit capable de récupérer le cookie qui est sur le serveur Apache à partir du nom!
mazzini
Customer

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

J'essaie désespérément de faire fonctionner cette méthode. Pourtant ma configuration passe les étapes de vérification de la partie 7.
Lorsque à l'aide de wireshark j'analyse le dialogue entre share et alfresco je constate que les requêtes de share vers alfresco du type /alfresco/wcs/webframework/content/metadata?user=mazzini se termine par un code 302 avec une redirection sur mon serveur CAS. Cela ne me surprend pas compte tenu de la directive apache

<LocationMatch ^/alfresco/(?!service/|service$|webdav/|webdav$|s/|s$).*>
AuthType CAS
AuthName "CAS"
require valid-user
CASScope /alfresco
</LocationMatch>

mais me laisse dans un état d'incompréhension sur la façon dont tout cela fonctionne.

J'utilise la version 3.4.d community.

Merci à vous
mazzini
Customer

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

Autant pour moi. Le dysfonctionnement provenait d'une mauvaise configuration de mon serveur CAS. La redirection vers le service demandé s'effectuait en javascript et non pas à l'aide d'un code 302 (fichier login-webflow.xml).

Cordialement
bbougon
Member II

Re: Alfresco 3.4b Explorer & Share - SSO CAS

Bonjour,

j'ai été confronté à un problème similaire. J'ai partagé ma solutionsur ce post :

http://forums.alfresco.com/en/viewtopic.php?f=6&t=38841&p=114137#p114137

cdt