[#if coverImage??]
    [#if coverImage?is_hash]
        [#if coverImage.alt??]
            ${coverImage.alt}
        [/#if]
    [/#if]
[/#if]

Cet article s'intéresse à la configuration d'une connexion LDAP dans Liferay 7.2, à partir d'une configuration préparée pour Liferay 6.2. Il est le fruit d’une collaboration avec notre Lead Tech Guilherme Ferreira.

Modules OSGI de configuration

Liferay (LR) 7.2 passe par des modules OSGI pour gérer les configurations du portail. De cette façon, les fichiers des versions précédentes du portail, plus précisément en .properties, sont désormais remplacés par des fichiers .config. Ces fichiers suivent la règle de nommage suivante: <java.full.class.name>-<id>.config et sont déployés dans ${LIFERAY_HOME}/osgi/configs. Par la suite, ils seront chargés à chaud dans leurs classes respectives via un événement de type change. Ce point est évidemment un atout lorsque vous devrez effectuer un changement de configuration sur une instance LR en cours d'exécution.

Pour configurer LR 7.2 de manière reproductible, la stratégie préconisée est d'utiliser les fichiers .config d'OSGi. Quelle que soit l'installation, les configurations seront prises en charge sans autre manipulation. De plus, les fichiers de configuration peuvent être stockés dans le code source et donc versionnés.

Configuration LDAP

La configuration LDAP peut être mise en place de deux manières différentes:
    (1) par l'interface d'administration système du portail,
    (2) en utilisant les fichiers de configuration OSGi.
Nous recommandons l'utilisation de l'option (2), mais faisons d'abord connaissance avec la première. Il faut noter qu'il est important de distinguer la configuration système et la configuration d'instance. On peut lire dans la doc LR:
"Vous pouvez également définir une connexion de serveur LDAP dans le scope des paramètres système (System Settings). Comme cette interface utilisateur est auto-générée, elle n'est pas aussi pratique que l''interface des paramètres d'instance (Instance Settings). Pour cette raison, vous devriez définir et ajuster/corriger votre réglage dans les paramètres d'instance en priorité. Si vous décidez de mettre la connexion LDAP en commun, c'est-à-dire au niveau du scope système, vous pouvez alors copier votre configuration des paramètres d'instance, puis supprimer le serveur LDAP des paramètres d'instance."

Ceci signifie que vous pouvez utiliser les paramètres système comme un générateur de modèle, afin qu'il génère les fichiers .config avec les noms corrects et les bonnes valeurs. Cependant le portail ne prendra en compte que les paramètres d'instance. Voici les actions nécessaires pour les mettre en place:

  • Se connecter sur la consome d'administration de Liferay.

  • Aller dans Control Panel ❯ Configuration ❯ System Settings ❯ LDAP

  • Dans le panneau de gauche "VIRTUAL INSTANCE SCOPE" sélectionner Authentication

  • Changer les valeurs et appuyer sur Save, puis cliquer en haut à droite dans le menu Icône points de suspension ❯ Export

  • On récupère alors un fichier dont le nom suit la règle  com.liferay.portal.security.ldap.authenticator.configuration.LDAPAuthConfiguration-<id>.config

  • Annuler les changements en cliquant sur le menu Icône points de suspension ❯ Reset Default Values

  • Répéter la procédure pour les options Servers, Export, Import dans le panneau de gauche "VIRTUAL INSTANCE SCOPE"

A la fin de la procédure vous aurez récupérer 3 fichiers avec la configuration par défaut d'une connexion à un serveur LDAP. Ces fichiers sont presque prêts à être "déployés" dans le répertoire de configuration OSGi. Je dis presque parce qu'il reste une configuration importante à modifier... Si vous ouvrez l'un de ces fichiers, vous devriez trouver une variable: companyId="0". Dans ce cas, l'ID de compagnie fait référence à l'instance virtuelle que vous souhaitez configurer. Comme nous l'avons vu précédemment, vous ne pouvez utiliser les fichiers de config que pour une instance particulière, et les paramètres système dans ce cas ne correspondent pas à l'application d'une configuration générale à toutes les instances... Pour récupérer cet identifiant:
- Aller dans Control Panel ❯ Configuration ❯ Virtual Instances ❯ Instance ID

Remplacez alors la valeur correcte de la variable companyId dans tous les fichiers.

Migrer une configuration LDAP de LR 6.2 vers LR 7.2

Comme nous sommes dans le cadre d'une migration des configurations d'un serveur LR 6.2 vers LR 7.2, nous pouvons constater que certaines propriétés ont été modifiées voire ont complètement disparu... Voici un tableau qui décrit les correspondances entre les propriétés existant pour un portail LR 7.2 et celles de la version précédente.

Table de correspondance des configurations de serveur LDAP

Format de nom de fichier:  com.liferay.portal.security.ldap.configuration.LDAPServerConfiguration-<ID>.config

Clés Liferay 7.2

 Clés Liferay 6.2

Notes

companyId

 

Variable introduite dans LR 7.2 pour faire référence à l'ID d'instance.

Control Panel ❯ Configuration ❯ Virtual Instances ❯ Instance ID

ldapServerId
 

Comme on peut se connecter à un ou plusieurs serveurs LDAP, il faut préciser un ID entre 0 et 99999.

serverName
 

Nom descriptif de la configuration de l'instance de connexion

baseProviderURL
ldap.base.provider.url.0
 
baseDN
ldap.base.dn.0
 
securityPrincipal
ldap.security.principal.0
 
securityCredential
ldap.security.credentials.0
 
authSearchFilter
ldap.auth.search.filter.0
 
userSearchFilter
ldap.import.user.search.filter.0
 
userMappings
ldap.user.mappings.0
 
userCustomMappings
ldap.user.custom.mappings.0
 
userIgnoreAttributes
   
contactMappings
ldap.contact.mappings.0
 
contactCustomMappings
ldap.contact.custom.mappings.0
 
groupSearchFilterEnabled
 

Cette propriété est vraie par défaut sur LR 6.2.

groupSearchFilter
ldap.import.group.search.filter.0
 
groupMappings
ldap.group.mappings.0
 
usersDN
ldap.users.dn.0
 
userDefaultObjectClasses
ldap.user.default.object.classes.0
 
groupsDN
ldap.groups.dn.0
 
groupDefaultObjectClasses
   

 

Table de correspondance des configuration d'authentification

Format de nom de fichier:  com.liferay.portal.security.ldap.authenticator.configuration.LDAPAuthConfiguration-<ID>.config

Clés LR 7.2

Clés LR 6.2

Notes

companyId
 

Variable introduite dans LR 7.2 pour faire référence à l'ID d'instance.

enabled
ldap.auth.enabled
 
method
ldap.auth.method
 
passwordEncryptionAlgorithm
ldap.auth.password.encryption.algorithm
 
passwordPolicyEnabled

 

Mettre cette propriété à vrai pour utiliser la politique de mot de passe du serveur LDAP au lieu de la politique du portail.

required
ldap.auth.required
 

 

Table de correspondance des configurations d'export

Format de nom de fichier:  com.liferay.portal.security.ldap.exportimport.configuration.LDAPExportConfiguration-<ID>.config

Clés LR 7.2

Clés LR 6.2

companyId
 
exportEnabled
ldap.export.enabled
exportGroupEnabled
ldap.export.group.enabled

 

Table de correspondance des configurations d'import

Format de nom de fichier:  com.liferay.portal.security.ldap.exportimport.configuration.LDAPImportConfiguration-<ID>.config

Clés LR 7.2

Clés LR 6.2

companyId
 
importCreateRolePerGroup

 
importEnabled
ldap.import.enabled
importGroupCacheEnabled
 
importInterval
ldap.import.interval
importLockExpirationTime
 
importMethod
ldap.import.method
importOnStartup
ldap.import.on.startup
importUserPasswordAutogenerated
ldap.import.user.password.autogenerated
importUserPasswordDefault
 
importUserPasswordEnabled
ldap.import.user.password.enabled
importUserSyncStrategy
 

 

Pour vérifier que vos fichiers de configuration sont bien pris en compte, il faut les récupérer depuis ${LIFERAY_HOME}/osgi/configs, aller dans Control Panel❯ Configuration ❯ Instance SettingsLDAP, puis dans le panneau de gauche "VIRTUAL INSTANCE SCOPE" comparer si ces paramètres correspondent à ceux souhaités.

Bonus

Une contribution intéressante serait de développer un utilitaire de mapping automatique pour nous simplifier la vie... Il recevrait en entrée le fichier .properties de LR 6.2 et génèrerait les fichiers de configuration compatibles avec une utilisation sur LR 7.2.

Documentation utile chez Liferay

https://portal.liferay.dev/docs/7-2/deploy/-/knowledge_base/d/ldap
https://portal.liferay.dev/docs/7-2/deploy/-/knowledge_base/d/configuring-ldap