lundi 8 décembre 2014

Liferesco : Intégration de Liferay avec Alfresco



L’intégration des deux briques Liferay et Alfresco produit une solution de travail collaboratif qui allie la gestion électronique de documents aux portails intranet, extranet ou internet !

AVANTAGES

  • Une solution complémentaire : Liferay sert d’interface pour le portail alors qu’Alfresco va être le moteur de l’application. Les données du site sont stockées sous forme documentaire dans Alfresco, ce qui augmente fortement l’espace de stockage. 
  •  Une gestion des utilisateurs, des formulaires et un moteur de recherche uniques : la combinaison d’Alfresco et Liferay permet de profiter d’une authentification unique, d’une gestion centralisée des utilisateurs et d’un moteur de recherche qui combine sa recherche sur les éléments du portail, d’Alfresco et des applications métiers. 
  •  La gestion électronique de documents combinée à Liferay : grâce à l’intégration d’Alfresco, il est possible de classer et de définir les droits d’accès aux différents documents électroniques : l’utilisateur voit uniquement les documents qui le concernent grâce au moteur de recherche intégré.
  • Une gestion associée du contenu : Alfresco va servir de support pour tout le contenu web du portail (CMS) en créant pour chaque rubrique la structure générale et en lui associant un modèle de présentation défini. Liferay récupère les données de ce contenu Web directement dans Alfresco afin de l’afficher sur le portail.


FONCTIONNALITÉS





INTEGRATION

Liferay propose en standard deux modes d’intégration :

A.    L'intégration d'Alfresco en tant que portlets dans Liferay

Procédure :

We will be seeing here the proper way of intregrating Alfresco 4.x with Liferay 6.1 version. So, here I have given details process, How you can achive the integration.
Let’s do some few steps for integrating Alfresco 4.x with Liferay 6.1.

As we can have assumption that you might have installed the Alfresco and Liferay Tomcat bundles into separate directories. Let’s say as <ALFRESCO_HOME> and<LIFERAY_HOME>.

NOTE: If you are not using any SSO for both servers, Make sure you create a same user admin/admin in Liferay. Doing this you will have common user in both environment.

1.       You need to have different ports number for Alfresco and Liferay running on to resolve port conflicts, Say Alfresco is running on 8080 and Liferay on 5050. So, you can configure the Liferay port in Tomcat server by editing <LIFERAY_HOME>/<tomcat>/conf/server.xml

...
<Server port="5005" shutdown="SHUTDOWN">
...
<Connector port="5050" protocol="HTTP/1.1"
        connectionTimeout="20000"
         redirectPort="5443" URIEncoding="UTF-8" />
...
<Connector port="5009" protocol="AJP/1.3" redirectPort="5443" URIEncoding="UTF-8" />
...

2.       Now, You need to change the Share Loader by editing   <LIFERAY_HOME>/<tomcat>/conf/catalina.properties and locate the "shared.loader" entry and replace it with this:

shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar

These will load the alfresco custom and extension configuration with respect to the XML and other properties files. And also if you have the custom jar files.

3.       You have to enable the external authenticate services of alfresco, we can do that by editing <ALFRESCO_HOME>/tomcat/shared/classes/alfresco-global.properties and add to file.

Add the following line at the end of the file

authentication.chain=alfrescoNtlm1:alfrescoNtlm,external1:external
external.authentication.proxyUserName=

Note: Leave the value of proxyUserName blank

4.       You can deploy the share.war file in Liferay deploy folder.
Copy <ALFRESCO_HOME>/tomcat/webapps/share.war to <LIFERAY_HOME>/deploy

5.       As you set the share loader in catalina.properties inside Liferay tomcat. You need to copy the Share Loader from Alfresco to Liferay. Let copy the entire folder
<ALFRESCO_HOME>/tomcat/shared  directory to  <LIFERAY_HOME>/<tomcat>/

Note: Alfresco requirement is to copy the shared/classes/alfresco/web-extension/ directory where all the custom xml configuration files are placed, to have a common bridge between Liferay and Alfresco. So, it’s convenient task to copy entire folder.

6.        Finally you need to configure SSO, what we called as Bridge.
Create a file <LIFERAY_HOME>/<tomcat>hared/classes/alfresco/web-extension/share-config-custom.xml, and copy the below code to enable remote authenticator. shared/classes/alfresco/web-extension/share-config-custom.xml

<alfresco-config>
<!-- Overriding endpoints to reference a remote Alfresco server -->
  <config evaluator="string-compare" condition="Remote">
        <remote>
           <endpoint>                   
                              <id>alfresco-noauth</id>
               <name>Alfresco - unauthenticated access</name>
               <description>Access to Alfresco Repository WebScripts that do not require authentication</description>
               <connector-id>alfresco</connector-id>
               <endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
               <identity>none</identity>
          </endpoint>
          <endpoint>
               <id>alfresco-feed</id>
               <name>Alfresco Feed</name>
               <description>Alfresco Feed - supports basic HTTP authentication</description>
               <connector-id>http</connector-id>
               <endpoint-url>http://localhost:8080/alfresco/s</endpoint-url>
               <basic-auth>true</basic-auth>
               <identity>user</identity>
          </endpoint>
          <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://localhost:8080/alfresco/wcs</endpoint-url>
               <identity>user</identity>
               <external-auth>true</external-auth>
          </endpoint>
      </remote>
  </config>
</alfresco-config>

NOTE: If you're running Alfresco's Tomcat server on a different host or port, please change the corresponding endpoint.

7.    Last but not the least, you can startup both the servers Liferay and Alfresco
8.       Now you can able to see the 3 portlets under Alfresco category in Dock bar menu | Add portlet in Liferay. Try to add the Share Document library portlet in Liferay Page.

Limitations :

1.       SSO
Pour assurer l’intégration d’Alfresco dans Liferay par le mode portlet, la mise en place d’un outil de SSO est nécessaire.

2.       Installation
Le déploiement requiert beaucoup de configuration pour assurer le fonctionnement du Share Alfresco au sein de Liferay puisque le fonctionnement repose sur ce dernier. Il est donc nécessaire de reporter toute la configuration du share dans le contexte Liferay.

3.       Réutilisabilité
Les documents gérés dans Alfresco et affichés via la portlet Share ne peuvent pas être réutilisés dans les fonctionnalités Liferay (Contenus web,…). La portlet permet uniquement la gestion du référentiel de document Alfresco.

B.     L’intégration d'Alfresco Repository à travars le Portlet "Document and Media" via CMIS 

Procédure :


Liferay propose en standard un module d’intégration de référentiel CMIS.
CMIS permet de connecter des applications comme Sharepoint, Documentum ou Alfresco en utilisant ce protocole.
 

Création du repository Alfresco dans Liferay :
Name: Alfresco Repository
Description: Alfresco Repository
Repository Type: CMIS Repository (AtomPub)





Une fois connecté le repository affiche alors les dossiers et documents présent dans Alfresco :



Les documents publiés dans Alfresco sont alors directement accessible dans Liferay. Il est également possible (en fonction des permissions) de créer ou de mettre à jour des documents à partir de Liferay.
L’utilisation d’un « repository » permet d’utiliser la fonctionnalité standard de Liferay vis-à-vis des documents : lien dans un contenu web, liste de documents.


Limitations :

1.       Gestion d’identité
Une des problématiques de l’interconnexion de deux outils est le transfert de l’identité de l’utilisateur consultant/modifiant les documents.
En standard Liferay propose d’utiliser l’identifiant et le mot de passe lors de la connexion à Alfresco via CMIS. Cela présente 3 points négatifs :
-          Il faut activer l’authentification par screenname
-          Il faut stocker le mot de passe utilisateur dans la session utilisateur (risque de sécurité).
-          Il faut disposer des mêmes informations d’authentification (identifiant/mot de passe dans les deux systèmes).
Il sera donc préférable de mettre en place un tiers de confiance (Active Directory, NTML, SSO).

2.       Métadonnées
Une des fonctionnalités majeurs d’Alfresco est la possibilité de définir un méta modèle spécifiques et ainsi de caractériser les documents publiés par l’ajout de méta données (exemple : client lié à un contrat).
Actuellement l’implémentation standard CMIS ne permet pas d’extraire les métadonnées du document. Celles-ci ne pourront pas être véhiculées et réutilisées dans Liferay.
Alfresco propose une extension à CMIS afin de permettre l’extraction des métadonnées. Il conviendra d’étendre le fonctionnement du repository Liferay pour y ajouter la gestion de l’extension Alfresco. Ces métadonnées pourraient alors être utilisées dans l’affichage des documents.

3.       AssetPublisher
Les documents accessibles via un repository CMIS ne sont pas accessibles via la portlet standard Asset Publisher.
Cette portlet permet l’affichage dynamique de contenus Liferay (Documents, Dossiers, Contenus Web) en fonction de critères de filtre.
Il conviendrait d’étendre le fonctionnement du repository CMIS pour ajouter les documents en tant qu’Asset dans Liferay.


C.     Conclusion


Il n’existe pas aujourd’hui de solution technique permettant de fournir une intégration complète entre ces 2 outils.
Le mode le plus aboutit passe par l’utilisation du protocole CMIS qu’il est possible d’étendre et compléter avec des fonctionnalités complémentaires (Asset, Tags, Catégorie) mais cela nécessitera un développement complémentaire au module existant (cf module Sharepoint pour Liferay).