Alfresco 4.2f – l’Authentification

Alfresco propose plusieurs systèmes d’authentifications (Authentication Subsystems), ici on va s’intéresser au modules suivants : ldap-ad, ntlm et passthru.

Le but étant que les clients (Infrastructure AD Microsoft) soient directement authentifiés sur Alfresco via l’AD, sans avoir à entrer d’identifiants de connexions, peu importe le protocole utilisé, Alfresco Share, SharePointProtocol, WebDAV ou CIFS.

On part du principe qu’Alfresco est installé dans /alfresco

Les différents fichiers de configuration des subsystems sont stockés à cet endroit :

/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication

Comme pour les subsystems de transformation de documents nous n’allons pas modifier la configuration en « dur », mais paramétrer certains points spécifiques directement dans le fichier
alfresco-global.properties, ou bien au besoin créer un nouveau subsystem personnalisé.

1/ ldap-ad :

Afin de mapper certains champs supplémentaires de l’AD avec Alfresco (Adresse Mail, Téléphone, etc…) nous allons devoir créer un nouveau subsystem que l’on nommera ldap-ad1 (peut importe le nom, il faudra juste faire attention à bien appeler le bon subsystem lors du paramétrage).

On va donc créer l’arborescence suivante :

mkdir -p /alfresco/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap-ad1

Puis on va y copier les fichiers suivants : ldap-ad-authentication.properties et ldap-ad-authentication-context.xml depuis le subsystem par défaut d’Alfresco.

cp /alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap-ad/ldap-ad-authentication.properties /alfresco/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap-ad1/

cp /alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap-ad/ldap-ad-authentication-context.xml /alfresco/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap-ad1/

On va également copier le fichier common-ldap-context.xml mais à un niveau plus haut, dans le répertoire contenant les différents subsytems. On pourra également créer plusieurs subsystems selon les besoins, ldap-ad1, ldap-ad2 etc…

cp /alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/common-ldap-context.xml /alfresco/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/

On va maintenant modifier le fichier common-ldap-context.xml afin de pouvoir mapper des champs supplémentaires depuis l’AD vers Alfresco, par exemple les n° de téléphones, nom de société, nom du poste etc… Alfresco par défaut ne remonte pas tout.

Nous y ajouterons les définitions suivantes à partir de :

<property name= »personAttributeMapping »> entre la balise <map> et </map>

 

<entry key= »cm:jobtitle »>
<value>${ldap.synchronization.userJobTitleAttributeName}</value>
</entry>
<entry key= »cm:organization »>
<value>${ldap.synchronization.userOrganizationAttributeName}</value>
</entry>
<entry key= »cm:location »>
<value>${ldap.synchronization.userLocationAttributeName}</value>
</entry>
<entry key= »cm:mobile »>
<value>${ldap.synchronization.userMobileAttributeName}</value>
</entry>
<entry key= »cm:companypostcode »>
<value>${ldap.synchronization.userCompanyPostCodeAttributeName}</value>
</entry>
<entry key= »cm:companyfax »>
<value>${ldap.synchronization.userCompanyFaxAttributeName}</value>
</entry>
<entry key= »cm:companytelephone »>
<value>${ldap.synchronization.userCompanyTelephoneAttributeName}</value>
</entry>
<entry key= »cm:companyemail »>
<value>${ldap.synchronization.userCompanyEmailAttributeName}</value>
</entry>
<entry key= »cm:persondescription »>
<value>${ldap.synchronization.userPersonDescriptionAttributeName}</value>
</entry>
<entry key= »cm:telephone »>
<value>${ldap.synchronization.userTelephoneAttributeName}</value>
</entry>
<entry key= »cm:companyaddress1″>
<value>${ldap.synchronization.userCompanyAddress1AttributeName}</value>
</entry>
<entry key= »cm:companyaddress2″>
<value>${ldap.synchronization.userCompanyAddress2AttributeName}</value>
</entry>
<entry key= »cm:companyaddress3″>
<value>${ldap.synchronization.userCompanyAddress3AttributeName}</value>
</entry>

Passons maintenant au paramétrage proprement dit du subsystem fraichement créé. On va pour ça éditer le fichier ldap-ad-authentication.properties et y définir les paramètres ci-dessous, mes utilisateurs disposent d’un login du type « gerard@majax.net ». Faites bien attention à respecter la casse lors de la définition des groupSearchBase et userSearchBase.

Le plus simple est d’aller récupérer ces informations directement depuis l’Active Directory via la console, en activant les fonctionnalités avancées, puis clic droit propriétés sur l’UO, on peut ainsi récupérer le chemin direct.

uo

Voici les paramètres que j’ai utilisés :

ldap.authentication.userNameFormat=%s@domain.tld
ldap.authentication.java.naming.provider.url=ldap://adress:389
ldap.synchronization.java.naming.security.principal=user@domain.tld
ldap.synchronization.java.naming.security.credentials=password
ldap.synchronization.groupSearchBase=OU=organization-unit,DC=domain,DC=tld
ldap.synchronization.userSearchBase=OU=organization-unit,DC=domain,DC=tld

On va maintenant définir les champs que l’on souhaite synchroniser avec Alfresco :

ldap.synchronization.userJobTitleAttributeName=title
ldap.synchronization.userOrganizationAttributeName=department
ldap.synchronization.userLocationAttributeName=physicalDeliveryOfficeName
ldap.synchronization.userMobileAttributeName=mobile
ldap.synchronization.userCompanyPostCodeAttributeName=postalCode
ldap.synchronization.userCompanyFaxAttributeName=facsimileTelephoneNumber
ldap.synchronization.userCompanyTelephoneAttributeName=telephoneNumber
ldap.synchronization.userCompanyEmailAttributeName=mail
ldap.synchronization.userPersonDescriptionAttributeName=info
ldap.synchronization.userTelephoneAttributeName=homePhone
ldap.synchronization.userCompanyAddress1AttributeName=streetAddress
ldap.synchronization.userCompanyAddress2AttributeName=l
ldap.synchronization.userCompanyAddress3AttributeName=st

Une fois le/les subsystems paramétrés, on les appelles depuis alfresco-global.properties :

### Protocoles d’authentification ###
authentication.chain=ldap-ad1:ldap-ad

Puis on force la synchronisation régulière, ici toutes les 30 minutes du lundi au vendredi entre 09h et 18h (à paramétrer dans alfresco-global.properties) :

### Synchronisation Active Directory ###
synchronization.import.cron=0 0/30 9-18 ? * MON-FRI
synchronization.synchronizeChangesOnly=false
synchronization.syncWhenMissingPeopleLogIn=true

Un petit service alfresco restart et ça devrait être ok!

2/ AlfrecoNTLM et passthru :

En plus de la synchronisation Ldap nous allons paramétrer Ntlm et Passthru. Ntlm pour pouvoir s’authentifier à l’aide des informations de sessions windows et utiliser les fonctions de SSO (single sign on) et Passthru pour authentifier les utilisateurs non pas sur le serveur Alfresco mais directement sur une infra AD.

Pour ce faire il faut dé-commenter la fin du fichier suivant :

/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml

En supprimant la chaîne <!– juste au dessus de <config evaluator= »string-compare » condition= »Remote »>

Nous allons ensuite paramétrer les différents modules, pas besoin de créer des subsytems personnalisés cette fois ci, nous allons injecter les paramètres que nous souhaitons utiliser directement dans le alfresco-global.properties

### Protocoles d’authentification ###
authentication.chain=passthru1:passthru,ldap-ad1:ldap-ad,alfrescoNtlm1:alfrescoNtlm
### Ntlm ###
alfresco.authentication.allowGuestLogin=false
alfresco.authentication.authenticateCIFS=true
ntlm.authentication.sso.enabled=true
ntlm.authentication.mapUnknownUserToGuest=false
### Passthru ###
passthru.authentication.defaultAdministratorUserNames=user1,user2,user3 passthru.authentication.domain=domain.tld
passthru.authentication.servers=DOMAIN\\IP
passthru.authentication.guestAccess=false

Redémarrer les service alfresco (service alfresco restart) et ça devrait être ok.

Pour que cela fonctionne les postes utilisateurs windows doivent utiliser Ntlm v1 et les urls d’Alfresco doivent être présentes dans la liste des sites de confiances du poste. (Panneau de configuration > options internet > sécurité)

Je décrirais dans un prochain post la façon de déployer ces paramètres par GPO.

 

Rien de bien sorcier jusque là… La suite au prochain épisode.

1 commentaire

  1. Bonsoir Vincent,
    Mille merci pour ce tuto clair et concis, mais je voudrais savoir quand est il pour une authentification d’utilisateur dans active directory et dont le login est du genre jean.dupont@uderzo.lan ?
    vous faites référence à : ldap.authentication.userNameFormat=%s@domain.tld
    comment je pourrai contourner cette contrainte dans mon installation ? est ce que je mettrai user@domain.tld ?
    je coince à ce niveau et c’est hyper urgent pour achever mon travail SVP….HELP PLZ…………SOS
    j’espère vous lire très bientôt. vous avez mon adresse mail polene@gmail.com, et merci d’avance pour votre effort .
    bien à vous

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.