Question / Problème

Il est possible de configurer plusieurs annuaires et serveurs LDAP par rapport auxquels s'authentifier. Pour ce faire, plusieurs sections LDAPLoginModule doivent être configurées.

Depuis CRX2.0, plusieurs configurations de LDAPLoginModule ne sont plus efficaces, une configuration est donc utilisée. Cela signifie que l'authentification LDAP via plusieurs annuaires n'est pas possible.

Réponse / Résolution

Il existe une façon détournée de s'authentifier via plusieurs serveurs LDAP. Le principal problème est qu'avec CRX2.0, l'attribut principal_provider.name qui fournit essentiellement l'identifiant unique d'un annuaire LDAP a été déprécié. À sa place, l'attribut principal_provider.class est utilisé comme identifiant unique.

Comme solution à ce problème, des noms de classe uniques doivent être configurés pour l'attribut principal_provider.class pour chaque LDAPLoginModule configuré. Joint à cet article est un fichier contenant 6 classes uniques qui étendent la classe par défaut : com.day.crx.security.principals.LDAPPrincipalProvider class:

  • com.day.daycare.ldap.LDAP1
  • com.day.daycare.ldap.LDAP2
  • com.day.daycare.ldap.LDAP3
  • com.day.daycare.ldap.LDAP4
  • com.day.daycare.ldap.LDAP5
  • com.day.daycare.ldap.LDAP6

Déployer le fichier multi-ldap-patch.jar au dossier d'applications Web CRX WEB-INF/lib. Par exemple, crx-quickstart/server/runtime/0/_crx/WEB-INF/lib puis configurez les LoginModules en conséquence.

Exemple :

com.day.crx {
   com.day.crx.security.authentication.CRXLoginModule sufficient;
   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       host="MyHost1"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.daycare.ldap.LDAP1"
       host="MyHost2"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.daycare.ldap.LDAP2"
       host="MyHost3"
       ...;
}

CRX 2.2 / 2.3

Remrque: dans la version actuelle de CRX 2.2, ce problème a été corrigé. L'attribut principal_provider.name a été ajouté. Il n'est donc plus nécessaire de disposer des noms de classe uniques configurés pour l'attribut principal_provider.class.

Voici un exemple qui fonctionne avec CRX 2.2 et des serveurs ldap multiples :

com.day.crx {
   com.day.crx.security.authentication.CRXLoginModule sufficient;
   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap1"
       host="MyHost1"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap2"
       host="MyHost2"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap3"
       host="MyHost3"
       ...;
}

Application

CRX 2.0 / 2.1 / 2.2 / 2.3

Telechargement

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne