Alfresco Client, ed LDAP

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

Alfresco Client, ed LDAP

Salve.

Sono riuscito a far funzionare correttamente Alfresco 3.0 (in tomcat) con LDAP e CAS.

Ora volevo fare la stessa cosa, ma installando l'alfresco client (alfresco-portlet-5.2.0.1.war) come portlet dentro liferay.
Sono riuscito nell'intento, e la portlet sembra funzionare correttamente.

Il problema è che il procedimento da me utilizzato per l'integrazione con LDAP ed alfresco 3.0 "stand alone" non funziona…
Alcune delle classi utilizzate per il dialogo con LDAP (ad esempio "org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl" ) non sono affatto presenti nel client… ed in effetti di librerie in meno ce ne sono davvero parecchie.
Il semplice "aggiungere" le librerie mancanti prendendole dall'installazione completa di alfresco non sembra garantire un buon esito…

Sapete darmi qualche consiglio su come procedere?
Mi sembra francamente strano che alfresco client, che è pensato per funzionare all'interno di un portale, non supporti la connessione ad LDAP… in una situazione del genere viene davvero naturale tentare la strada del SSO…

Esaminando il famoso pacchetto dei cignex, a cui chiunque si avvicini a questo problema credo che abbia dato un'occhiata (nel caso…. http://liferay.cignex.com ) ho notato però che il "loro" alfresco all'interno di tomcat sembra essere la versione completa di alfresco… e non semplicemente il client.
E qui vi chiedo: è possibile fare il semplice deploy del war di alfresco dentro liferay, e vederlo come portlet?

Vi ringrazio molto
2 Replies
openpj
Moderator
Moderator

Re: Alfresco Client, ed LDAP

E qui vi chiedo: è possibile fare il semplice deploy del war di alfresco dentro liferay, e vederlo come portlet?
Certamente, ma prima di tutto credo dobbiamo chiarire alcune cose.
Solitamente non ho mai avuto bisogno di altre applicazioni esterne per poter integrare Alfresco in un qualsiasi portlet container.

Innanzitutto per integrazione all'interno di un portale, cosa intendi?

Perché Alfresco può essere integrato in diversi modi, tanti quante sono le interfacce applicative che espone (CMIS, WebScript, Web Services, REST, JCR, etc…).
Probabilmente tu ti stai riferendo all'integrazione utilizzando la classe WebScriptPortlet che espone direttamente un qualsiasi WebScript come portlet all'interno del portlet container.

Inoltre è possibile integrare l'Alfresco Web Client come portlet utilizzando SSO direttamente con una configurazione e qualche piccola patch su Alfresco, quì puoi vedere come realizzarlo:
http://forums.alfresco.com/en/viewtopic.php?f=8&t=8539&p=28282&hilit=web+client+sso+portlet#p28282

In entrambi questi casi è necessario deployare Alfresco all'interno dell'application server del portlet container, il che solitamente non è proprio scalabile come soluzione.

Alternativamente sarebbe più opportuno implementare delle custom portlet che comunicano con il repository attraverso una delle interfacce applicative ed avere il repository installato su altre macchine diverse da quelle del portlet container.



Spero sia utile.
otakar81
Member II

Re: Alfresco Client, ed LDAP

Ti ringrazio, sei sempre molto gentile.

La portlet che mi interessa in questo momento (alfresco-client… quella che i cignex chiamano "alfresco client ext") è di tipo "AlfrescoFacesPortlet".

Sto seguendo il link che mi hai suggerito, ma ho qualche problema…


Lì suggerisce di utilizzare il war di alfresco labs, ma io al momento ho preferito provare con quella che avevo già disponibile (alfresco-portlet-5.2.0.1.war) in quanto ho problemi a far funzionare il war completo di alfresco nello stesso jboss in cui si trova liferay.

Ho correttamente inserito il portal-bridge di apache, e creato il filter.
C'è il metodo:

AuthenticationHelper.invalidateAuth()

che non esiste nella versione corrente della classe, e mi sono al momento limitato a commentarlo.
Ed ho aggiunto un pezzetto di codice in cui, dall'id dell'utente che si è connesso al portale (che viene restituito da: request.getUserPrincipal() ), usando i metodi di liferay ottendo il nome utente, che poi viene passato ad alfresco.

Quando mi connetto con liferay, alfresco riconosce correttamente l'utenza.
Tuttavia qualsiasi click io faccia all'interno della portlet di alfresco, nella migliore delle ipotesi non produce nulla (è come se non cliccassi proprio), mentre nella peggiore mi produce la seguente eccezione:

javax.portlet.PortletException: Cannot get value for expression '#{NavigationBean.isGuest == false && NavigationBean.guestHomeVisible}' 
at org.apache.myfaces.portlet.MyFacesGenericPortlet.handleExceptionFromLifecycle(MyFacesGenericPortlet.java:254)
at org.apache.myfaces.portlet.MyFacesGenericPortlet.processAction(MyFacesGenericPortlet.java:233)
at org.alfresco.web.app.portlet.AlfrescoFacesPortlet.processAction(AlfrescoFacesPortlet.java:200)
at org.apache.portals.bridges.portletfilter.PortletFilterChain.processActionFilter(PortletFilterChain.java:155)
at org.szimano.alfresco.JBossPortalAlfrescoPortletFilter.processActionFilter(JBossPortalAlfrescoPortletFilter.java:138)
at org.apache.portals.bridges.portletfilter.PortletFilterChain.processActionFilter(PortletFilterChain.java:148)
at org.apache.portals.bridges.portletfilter.FilterPortlet.processAction(FilterPortlet.java:135)
at com.sun.portal.portletcontainer.appengine.filter.FilterChainImpl.doFilter(FilterChainImpl.java:98)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:57)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:100)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:557)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:481)
at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:616)
at com.liferay.portlet.InvokerPortletImpl.invokeAction(InvokerPortletImpl.java:662)
at com.liferay.portlet.InvokerPortletImpl.processAction(InvokerPortletImpl.java:357)
at com.liferay.portal.action.LayoutAction.processPortletRequest(LayoutAction.java:595)
at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:423)
at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:195)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:159)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:505)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:732)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:143)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:142)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:140)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:282)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.cache.CacheFilter.processFilter(CacheFilter.java:417)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:244)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter.processFilter(OpenSSOFilter.java:73)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:193)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.doFilter(VirtualHostFilter.java:188)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.isGuest == false && NavigationBean.guestHomeVisible}'
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:397)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:822)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:393)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:397)
at javax.faces.component.UIForm.processDecodes(UIForm.java:51)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:397)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:131)
at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues(LifecycleImpl.java:200)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:71)
at org.apache.myfaces.portlet.MyFacesGenericPortlet.processAction(MyFacesGenericPortlet.java:221)
… 106 more
Caused by: javax.faces.el.EvaluationException: org.alfresco.web.bean.NavigationBean
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:78)
at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:532)
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
at org.apache.commons.el.BinaryOperatorExpression.evaluate(BinaryOperatorExpression.java:154)
at org.apache.commons.el.BinaryOperatorExpression.evaluate(BinaryOperatorExpression.java:154)
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:378)
… 115 more
Caused by: javax.faces.el.EvaluationException: Bean: org.alfresco.web.bean.NavigationBean, property: isGuest
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:404)
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:71)
… 120 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor772.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:400)
… 121 more
Caused by: java.lang.NullPointerException
at org.alfresco.web.bean.NavigationBean.getIsGuest(NavigationBean.java:613)
… 125 more

Non ho ancora patchato il metodo "getUser" di org.alfresco.web.app.servlet.AuthenticationHelper, perchè il problema citato nel post non sembrava essere il mio… quindi credo che ci sia qualche problema prima…

Ti ringrazio ancora