Dans cet article, nous proposons d’étudier les moyens existants pour l’intégration de Liferay et Alfreco. Le but est de permettre l’utilisation de documents stockés dans Alfresco dans les fonctions de publication proposées par Liferay.
Liferay propose en standard deux modes d’intégration :
- L’intégration des documents via le protocole CMIS
- Le déploiement de portlets pour l’affichage des documents.
1. Intégration par CMIS
a. Présentation
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 :
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.
b. Limitations
i. 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).
ii. 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.
iii. 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.
2. Portlets
a. Présentation
Alfresco propose en standard un mode portlet de l’interface Share. Par exemple : http://www.liferay.com/web/navin.agarwal11/blog/-/blogs/integration-with-alfresco-4-x-and-liferay-6-1
Ce mode permet d’avoir à l’ensemble des capacités d’Alfresco tout en restant dans le contexte Liferay.
b. Limitations
i. 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.
ii. 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.
iii. Cloisonnement
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.
3. 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).
Merci pour votre remarque. Nous n’avons effectivement pas développé ce point.
L’intégration de Liferay avec Alfresco via CMIS nécessite que les deux systèmes disposent du même référentiel utilisateur (identifiant / mot de passe), ce qui peut être gênant.
Comme l’indique le lien, il faut également que le password soit stocké dans la session de l’utilisateur, solution très peu sécurisée.
2 possibilités
– si vous n’avez pas de SSO:
Il faut réaliser un développement complémentaire afin de passer uniquement le ticket Alfresco en tant que mot de passe.cf :
http://wiki.alfresco.com/wiki/CMIS#Apache_Chemistry_OpenCMIS (seulement à partir de la version 4 d’Alfresco).
Exemple de code : http://alfrescodev.com/node/16
La question est maintenant : comment obtenir le ticket Alfresco sans passer de mot de passe ?
Pour cela il faut implémenter un customAuthenticator subSystem dans Alfresco pour autoriser une authentification avec un identifiant et une clé générique (pour un peu de sécurité).
Vous obtiendrez le ticket alfresco via l’appel à l’url de login /alfresco/service/api/login?u={username}&pw={password} et vous pourrez alors l’utiliser dans CMIS.
– si vous avez un SSO Cas
Quelques éléments de réponse sur l’intégration Liferay / Alfresco
http://www.liferay.com/fr/community/forums/-/message_boards/message/21018195
Bonjour,
Je suis justement à la recherche d’une solution d’intégration Liferay/Alfresco. Votre article m’a apporté quelques éléments de comparaison sur sur les deux approches mais je n’ai pas encore pu choisir même si ma préférence reste côté CMIS pour la possibilité de lier un document à du contenu.
Vous signalez des ajustements à prévoir du côté des assets, des tags et des catégories mais en lisant la documentation sur CMIS (http://www.liferay.com/fr/community/wiki/-/wiki/Main/CMIS+Repository) , j’ai pu m’apercevoir qu’il faut aussi effectuer un développement par rapport au SSO non géré nativement.
Cdlt,
Philippe