Table of Contents
Authentification OpenLDAP sur Alfresco 3.2 Community
ldap alfresco
Admettons que vous ayez un annuaire LDAP sous OpenLDAP. Admettons que vous ayez une installationd d'alfresco community version 3.2.
Vous souhaitez connecter les deux ensemble ? Ca tombe bien, moi aussi.
La doc est vaste et pas toujours claire, alors voici comment ça a fonctionné pour moi, sans avoir à toucher à OpenLDAP.
LDAP subsystem
Il faut configurer un subsystem d'authentification de type LDAP. Pour cela, on va d'abord modifier le fichier qui surcharge les paramètres d'alfresco dans /var/lib/tomcat5.5/shared/classes/alfresco-global.properties
<note warning>Ne pas modifier les fichiers dans /var/lib/tomcat5.5/webapps sinon il faudra tout refaire en cas de mise à jour…</note>
# vim /var/lib/tomcat5.5/shared/classes/alfresco-global.properties [... snip ...] authentication.chain=ldap1:ldap,alfrescoNtlm1:alfrescoNtlm
- La première partie est ajoutée afin de prendre en compte le backend LDAP.
- La deuxième partie du paramètre “alfrescoNtlm1:alfrescoNtlm” correspond à la chaine d'authentification par défaut, que l'on conserve pour le compte admin.
Properties LDAP
Nul besoin de modifier le fichier XML du backend LDAP. Il suffit de copier le fichier de properties présent dans :
/var/lib/tomcat5.5/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap/ldap-authentication.properties
et le mettre dans
/var/lib/tomcat5.5/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1
Attention à ce dernier chemin. Il est précis et doit refléter la chaine mise dans authentication.chain. On retrouve :
- le chemin général du répertoire d'extension
- puis le subsystems
- puis le mode Authentication
- puis le subsystem ldap qui correspond au deuxième paramètre de ldap1:ldap
- puis l'identifiant ldap1 du subsystem ldap, premier paramètre de ldap1:ldap
Dans ce répertoire, on retrouve donc le fichier ldap-authentication.properties ci-dessous. (j'ai volontairement supprimé la synchro LDAP entre Alfresco et OpenLDAP, je ne conserve que l'authentification).
ldap.authentication.active=true ldap.authentication.allowGuestLogin=false ldap.authentication.userNameFormat=%s ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory ldap.authentication.java.naming.provider.url=ldap://localhost:389 ldap.authentication.java.naming.security.authentication=DIGEST-MD5 ldap.authentication.escapeCommasInBind=false ldap.authentication.escapeCommasInUid=false ldap.authentication.defaultAdministratorUserNames= # ON DESACTIVE LA SYNCHRO, DONC TOUT CE QUI SUIS APRES CETTE LIGNE EST INUTILE !! ldap.synchronization.active=false ldap.synchronization.java.naming.security.principal=cn\=alfresco,dc\=domain,dc\=com ldap.synchronization.java.naming.security.credentials=secret ldap.synchronization.queryBatchSize=1000 ldap.synchronization.groupQuery=(objectclass\=groupOfNames) ldap.synchronization.groupDifferentialQuery=(&(objectclass\=groupOfNames)(!(modifyTimestamp<\={0}))) ldap.synchronization.personQuery=(objectclass\=inetOrgPerson) ldap.synchronization.personDifferentialQuery=(&(objectclass\=inetOrgPerson)(!(modifyTimestamp<\={0}))) ldap.synchronization.groupSearchBase=ou\=Groups,dc\=company,dc\=com ldap.synchronization.userSearchBase=ou\=People,dc\=company,dc\=com ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp ldap.synchronization.timestampFormat=yyyyMMddHHmmss'Z' ldap.synchronization.userIdAttributeName=uid ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail ldap.synchronization.userOrganizationalIdAttributeName=o ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider ldap.synchronization.groupIdAttributeName=cn ldap.synchronization.groupType=groupOfNames ldap.synchronization.personType=inetOrgPerson ldap.synchronization.groupMemberAttributeName=member ldap.synchronization.enableProgressEstimation=true
Voilà, avec ça, ca devrait fonctionner. En relancant tomcat, vérifiez dans les logs que ce fichier est bien pris en compte:
root@zerhuel:/# grep ldap-authentication.properties /var/log/tomcat5.5/alfresco.log 11:35:48,335 INFO [org.alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [/var/lib/tomcat5.5/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1/ldap-authentication.properties]