Integrazione con Liferay

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

Integrazione con Liferay

Salve  Smiley Very Happy

Sono finalmente riuscito ad integrare Alfresco 3 dentro Liferay 5.2.2, deployando il war di alfresco dentro lo stesso Jboss che "ospita" liferay, ed espondendo i vari servizi come portlet.

Ora ho le seguenti portlet di Alfresco correttamente funzionanti in liferay:

1 - Alfresco Client Portlet
2 - My Web Forms
3 - My Web Modified Files
4 - My Tasks
5 - My Spaces
6 - Document List

Seguendo l'approccio dei Cignex (http://liferay.cignex.com), ho usato LDAP e CAS per implementare il SSO.
Ora, tutte le portlet dalla 2 alla 6 (le WebScript Portlet) funzionano correttamente, ma la 1 (la più importante, tra l'altro… di tipo AlfrescoFacesPortlet) non ne vuole sapere di riconoscere l'utenza loggata dal CAS.

Sto confrontando quanto fatto da me con quanto fatto dai cignex, ma al momento non sono ancora riuscito a capire perchè da loro funzioni e da me no…


Un'altra cosa di cui mi sono reso conto giusto oggi… per tutte le cartelle ed i files presenti nel repository di alfresco, è sempre presente un'iconcina con la "i" che, se cliccata, apre una sorta di pop-up con una serie di informazioni sul file o la cartella…
E nelle portlet dalla 2 alla 6, cliccando vicino ad un contenuto, dovrebbe aprirsi una preview dello stesso…
Nessuna di queste cose però funziona nella versione portlet… sapete per caso come patchare il problema, o perlomeno come "nascondere" l'iconcina con la "i" in modo da non farlo vedere?
I cignex hanno fatto in modo di mostrare il messaggio "Not found" e "Sorry, preview currently unavailable." che pur non risolvendo la cosa, e pur non essendo bellissima, sono sempre meglio della bruttura che compare a me…

Vi ringrazio dell'aiuto
16 Replies
otakar81
Member II

Re: Integrazione con Liferay

Bene, ho risolto la prima parte… quella relativa al SSO della portlet Alfresco Client…

Vi rimando qui:

http://www.intalio.org/confluence/display/TEMPO/Details+of+Alfresco+SSO+integration+in+liferay

E per il file già modificato (nell'articolo c'è un link, ma è sbagliato… evidentemente nel frattempo hanno ristrutturato il repository):

http://tempo.intalio.org/tempo/branches/b4p/liferay-alfresco-sso/src/main/java/org/intalio/tempo/web...


Ora devo vedere il problema relativo alle preview, ed alle icone che forniscono le informazioni su files e cartelle… se qualcuno ne sa qualcosa, ogni commento sarà ben accetto  Smiley Very Happy
chicco0386
Active Member

Re: Integrazione con Liferay

Ciao,
ho integrato corretamente pure io Alfresco 3.2 comunity in liferay, ma ho il tuo stesso problema quando vado a cliccare sulla "i" delle info accanto a spaces o files….
Per caso hai risolto?

E in più risulta pure a te che la visualizzazione dell'albero degli spaces appaia così?

[img]http://img5.imageshack.us/img5/7025/alfrescodisplay.png[/img]

Sappiami dire qualsiasi tuo aggiornamento…

P.S. grazie per il link del SSO…
chicco0386
Active Member

Re: Integrazione con Liferay

Bene, ho risolto la prima parte… quella relativa al SSO della portlet Alfresco Client…

Vi rimando qui:

http://www.intalio.org/confluence/display/TEMPO/Details+of+Alfresco+SSO+integration+in+liferay

E per il file già modificato (nell'articolo c'è un link, ma è sbagliato… evidentemente nel frattempo hanno ristrutturato il repository):

http://tempo.intalio.org/tempo/branches/b4p/liferay-alfresco-sso/src/main/java/org/intalio/tempo/web...


Ora devo vedere il problema relativo alle preview, ed alle icone che forniscono le informazioni su files e cartelle… se qualcuno ne sa qualcosa, ogni commento sarà ben accetto  Smiley Very Happy

Ciao posso chiederti come hai fatto ad integrare la soluzione SSO del link?

Saresti molto gentile…

CIAO
Attendo risposte
otakar81
Member II

Re: Integrazione con Liferay

@Chicco.
Si, avevo i tuoi stessi problemi, ed alla fine non li ho risolti.
Ma al di là di quello c'erano poi una serie di piccole instabilità che ci hanno fatto optare per soluzioni diverse…
Direttamente dai miei appunti dell'epoca:

1.   Cartella -> More actions -> Manage space users -> invite.  La ricerca per gruppi non funziona
2.   Cartella -> More actions -> Manage space users -> invite.  La ricerca per gruppi/utenti, se fatta senza inserire nessuna chiave, non funziona (dovrebbe mostrare tutti i gruppi/utenti)
3.   Cartella -> More actions -> Manage content rules -> create rule.  Eccezione “nella transazione” quando si cerca di creare una nuova regola.
4.   Quando provo a “categorizzare” un documento, il javascript che dovrebbe caricare l’albero delle directory (“select a category”) non funziona (manda all’infinito il png del caricamento… come nell’albero di navigazione degli spaces sulla sinistra).
5.   Il download del file da “edit offline” non funziona -> rimanda alla pagina principale di liferay
6.   Il comando “check-in” lancia un’eccezione

E si tratta di problemi abbastanza antipatici…


Quindi alla fine abbiamo mantenuto liferay ed alfresco completamente separati (sono su due web server diversi… il che, in termini di scalabilità, è anche una buona cosa) e li abbiamo "integrati" (solo a livello di utenze) tramite LDAP e CAS.
All'interno di Liferay abbiamo inglobato alfresco tramite Iframes, in modo che l'utente abbia l'impressione di avere di fronte un portale unico.

L'unico problema che rimaneva, riguardava il logout: se fai logout da liferay (dopo aver usato anche alfresco), vieni rilasciato da liferay e dal cas, ma non da alfresco, in cui rimane memorizzata la vecchia utenza
Il che significa che se:

- Ti logghi come Pippo
- Fai logout
- Ti logghi come Pluto

Alfresco continua a vederti come Pippo.
Il che non è esattamente il massimo, soprattutto a livello di sicurezza.

Abbiamo risolto in maniera stilisticamente non elegantissima, ma in ogni caso efficace: quando fai clik sul logout di liferay, apriamo un piccolo popup che effettua fisicamente il logout da tutti gli altri applicativi in gioco.

Abbiamo un progetto con liferay, alfresco e 8 applicativi php "integrati" con questa tecnica (LDAP, CAS, iframes e "popup"), e funziona tutto perfettamente.

Per quelle che erano le nostre esigenze, va bene così.

Buon lavoro  Smiley Very Happy


Edit.
Se vuoi proseguire sulla strada dell'integrazione "vera", posso inviarti qualche appunto che mi ero preso all'epoca…
Niente di definitivo, bozze e probabilmente anche incompleti, ma magari possono esserti di aiuto.
Nel caso, mandami la tua email che te li spedisco.
chicco0386
Active Member

Re: Integrazione con Liferay

Ok grazie per la risposta,
io ho guardato pure l'approccio cignex, ma mi da errori di certificato…non saprei come risolvere.
Sto provando con openSSO, ma anche lì sorgono problemi.

hai da darmi qualche consiglio riguardo la gestione dei certificati con il CAS?
Ah, opero tutto in locale.

Ti sarei veramente grato per un aiuto.

CIAO e grazie ancora.
Buon lavoro, se puoi aspetto risposte e vedo se riesco a darti qualche dettaglio in più…
otakar81
Member II

Re: Integrazione con Liferay

Di preciso che problemi hai con il certificato?

Ti posto i miei appunti sull'argomento (application server: Tomcat o Jboss):

Installazione certificato sul server, per l’uso in https

Eseguire i seguenti comandi (fare attenzione a precedere il comando keytool dal percorso della $JAVA_HOME che si intende usare):

Cancellazione del vecchio certificato dal keystore di default

$JAVA_HOME/bin/keytool -delete -alias tomcat -keypass changeit

Cancellazione del vecchio certificate dal keystore java, della versione di java che si sta correntemente usando                                                                                          

$JAVA_HOME/bin/keytool -delete -alias tomcat -keypass changeit -keystore "$JAVA_HOME \jre\lib\security\cacerts"

Creazione del nuovo certificato (con la seguente istruzione, lo si sta creando nel keystore di default. In caso di incompatibilità nel formato del keystore, si può creare il certificato direttamente nel keystore java, utilizzando l’opzione -keystore $JAVA_HOME/jre/lib/security/cacerts)     

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keypass changeit -keyalg RSA

Export del certificato su file

$JAVA_HOME/bin/keytool -export -alias tomcat -keypass changeit  -file server.crt

Ed import dello stesso nel keystore java.
Se nel punto 3 si è creato il certificato direttamente in $JAVA_HOME/jre/lib/security/cacerts, si può saltare questa parte                                                      

$JAVA_HOME/bin/keytool -import -file server.crt -keypass changeit -keystore $JAVA_HOME/jre/lib/security/cacerts -alias tomcat

Import del certificate nel keystore di default. Operazione probabilmente superflua, visto che lo si è già creato lì dentro nel punto 3.                                                                                            
$JAVA_HOME/bin/keytool -import -file server.crt -keypass changeit -alias tomcat

Modificare il file server.xml in “[JBOSS_HOME]/server/default/deploy/jboss-web.deployer” , aprendo il connector sulla porta 8443.
Su JBOSS è sufficiente scommentare le righe relative a quella porta.

<Connector port="8443" minSpareThreads="5" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS" />

Il connector 8443 potrebbe avere una forma leggermente diversa. In particolare, potrebbero non essere presenti gli attributi “keystoreFile” e keystorePass”. Se così fosse, jboss andrà a cercare i suoi certificati nel keystore di default (che potrebbe, sotto linux, avere un formato diverso da jks – Java KeyStore – che Jboss si aspetta di utilizzare). In caso di problemi sul formato del keystore, aggiungere questi due attributi, in modo da farlo puntare sul keystore java.
Verificare il funzionamento del server cas in https sulla porta 8443


Il certificato NON può essere creato per un indirizzo IP. Si può quindi creare il certificato di prova per “localhost” (ma in questo caso il CAS deve trovarsi sulla stessa macchina fisica dalla quale cerchiamo di accedere al portale), oppure per il nome della macchina (ma il dns deve essere configurato opportunamente, ed in ogni caso deve essere specificato anche un dominio. Ad es: computer1.local)
chicco0386
Active Member

Re: Integrazione con Liferay

Seguendo le tue indicazioni mi dà errore proprio all'avvio del server tomcat:
INFO: Initializing Coyote HTTP/1.1 on http-8080
Nov 12, 2009 11:26:48 AM org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore
SEVERE: Failed to load keystore type JKS with path C:\Documents and Settings\Mariasole\.keystore due to Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
   at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
   at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
   at java.security.KeyStore.load(Unknown Source)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:340)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:259)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:444)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:409)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:125)
   at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:496)
   at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
   at org.apache.catalina.connector.Connector.initialize(Connector.java:1058)
   at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
   at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
   at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
   at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
   … 21 more
Nov 12, 2009 11:26:48 AM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.io.IOException: Keystore was tampered with, or password was incorrect
   at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
   at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
   at java.security.KeyStore.load(Unknown Source)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:340)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:259)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:444)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:409)
   at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:125)
   at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:496)
   at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
   at org.apache.catalina.connector.Connector.initialize(Connector.java:1058)
   at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
   at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
   at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
   at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
   … 21 more
Nov 12, 2009 11:26:48 AM org.apache.catalina.startup.Catalina load
SEVERE: Catalina.start
………..
…….


questa è la configurazione del server.xml

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="C:/Documents and Settings/Mariasole/.keystore" keystorePass="changeit"/>

Ti ringrazio per le tue risposte e spero tu posso rispondere pure a queste.

N.B. che sia il caso di cancellare il vecchio keystore in user.home?
perchè quando mi chiedeva di inserire la pass con parametro changeit, io ne inserivo un'altra che avevo settato nei test precedenti.
e anche se nel server.xml, metto la password che ho usato, l'errore è sempre lo stesso.
otakar81
Member II

Re: Integrazione con Liferay

Si, fai fuori il vecchio keystore e riprova.

Ti segnalo anche questo link

http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

Fammi sapere  Smiley Happy
chicco0386
Active Member

Re: Integrazione con Liferay

Grandeeeee…. Smiley Very Happy
Per adesso riesco a connetermi al server cas, che prima nn riuscivo…
Ti tengo aggiornato per l'integrazione con Alfresco e Liferay…sperando non ci siano problemi..

GRAZIE
Enrico