====== Authentification OpenLDAP sur Alfresco 3.2 Community ======
{{tag> 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**
Ne pas modifier les fichiers dans **/var/lib/tomcat5.5/webapps** sinon il faudra tout refaire en cas de mise à jour...
# 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]