cancel
Showing results for 
Search instead for 
Did you mean: 

Problemas de autenticación en alfresco 3.4 cluster

pacosm
Champ in-the-making
Champ in-the-making
Hola,

Tengo montado un cluster de alfresco con la versión 3.4 community. Un apache balancea con el modulo mod_jk a dos instancias tomcat6. Los indices lucene estan en local en cada una de las instancias tomcat y actualizan cada 5 seg, la base de datos mysql y el alf_data estan compartidos. Cuando conecto via web, me logueo correctamente, puedo insertar/borrar documentos/espacios/usuarios y los indices se replican correctamente y aparentemente funciona todo como debe. Sin embargo cuando intento conectar con la API de alfresco via SOAP falla, la aplicacioón conecta y devuelve el token de autenticación pero cuando intentamos insertar algun documento salta el siguiente error:

org.apache.ws.security.WSSecurityException: The security token could not be authenticated or authorized
        at org.apache.ws.security.processor.UsernameTokenProcessor.handleUsernameToken(UsernameTokenProcessor.java:150)
        at org.apache.ws.security.processor.UsernameTokenProcessor.handleToken(UsernameTokenProcessor.java:53)
        at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:311)
        at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:228)
        at org.apache.ws.axis.security.WSDoAllReceiver.invoke(WSDoAllReceiver.java:159)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        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.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
        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:774)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:662)

Parece como si el apache perdiera la sesión y cuando intenta insertar un documente lo intenta en el otro nodo el cual no posee el token de autenticación y falla. ¿Ha alguien le ha pasado algo parecido?

Saludos y muchas gracias
5 REPLIES 5

rmacian
Champ in-the-making
Champ in-the-making
Has configurado las sesiones en Apache como sticky ? Alfresco tiene un bug que no permite la replicación de sesiones entre nodos. Esto teoricament ese va a solucionar en la versión 3.4.3.

http://issues.alfresco.com/jira/browse/ALF-731

Por otro lado, has verificado que el cluster esta funcionando correctamente ? Si creas un espacio desde un nodo y asignas permisos, estos permisos se ven desde el otro nodo ?

toni_delafuente
Confirmed Champ
Confirmed Champ
Hola,

Aquí explica Fernando Gonzalez bastante bien como funciona:
http://www.fegor.com/2011/06/replica-la-informacion-alfresco-ecm-en.html

Espero que te sirva.

Saludos.

mikel_asla1
Confirmed Champ
Confirmed Champ
Buenas Toni!
Me gusto mucho el post! grande fegor.
Sin embargo lo hizo con la versión 3.3.4 Enterprise, tenemos otro hilo abierto al respecto y yo pensaba que esto estaba claro, ¿Funcionan las versiones posteriores a la 3.0 comunity en cluster?

toni_delafuente
Confirmed Champ
Confirmed Champ
No, no se replican las sesiones entre nodos, por eso hay que configuarar el balanceador o balanceadores con sticky session.

rmacian
Champ in-the-making
Champ in-the-making
Mikel,

echale un ojo al JIRA que he puesto y verás el tema de las sesiones.

Yo estuve hace unas semanas haciendo pruebas e intentando configurar el cluster a nivel de tomcat. Entonces me di cuenta que el problema no era tan sencillo. Para que el tema de cluster funcione, ya sea a nivel de alfresco o de tomcat, se necesitan que todos los objetos sean serializables. Hay algunos objetos que usa JSF o Alfresco (no se si son especificos de JSF o los ha metido Alfresco) que no lo son y por tanto al intentar pasarlos de un nodo a otro terminaban dando un error de serverfaces de que no podia serializarlos..

Esperemos a ver si con la 3.4.3 se soluciona de una vez por todas