Configurer LDAP Liferay 7.2 vs Liferay 6.2
Configurer LDAP Liferay 7.2 vs Liferay 6.2
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. |
|
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 Settings❯LDAP
, 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-lda