cancel
Showing results for 
Search instead for 
Did you mean: 

LDAP - Connection utilisateurs non autorisés

snutin
Champ in-the-making
Champ in-the-making

Bonjour,

Nous mettons actuellement en place un serveur OpenLDAP couplé entre autre avec un Alfresco. Je souhaites que seul les membres de deux groupes aient accès à Alfresco, pour cela j'ai créé deux groupes (alfresco_admin et alfresco_user) sur mon serveur openLDAP et j'ai activé le module memberOf afin d'avoir l'attribut correspondant sur les utilisateurs.

Malheureusement, même les utilisateurs ne faisant pas partie de ces groupes ont accès à Alfresco. Ils ne sont pas synchronisés de base mais leur profil est créé lorsqu'ils essaient de se connecter.

Comment faire en sorte que les utilisateurs ne faisant pas partie de ces groupes ne puisse pas se connecter dans Alfresco ?

Voici ma configuration :

alfresco-global.properties

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap 

ldap-authentication.properties

ldap.authentication.active=true 
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=uid=%s,ou=user,dc=domain,dc=com
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://ldap.domain.com:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.defaultAdministratorUserNames=Administrator
ldap.authentication.authenticateFTP=true ldap.synchronization.active=true
ldap.synchronization.java.naming.security.authentication=simple
ldap.synchronization.java.naming.security.principal=cn\=admin,dc\=domain,dc\=com
ldap.synchronization.java.naming.security.credentials=secret
ldap.synchronization.queryBatchSize=0
ldap.synchronization.attributeBatchSize=0 synchronization.synchronizeChangesOnly=false
synchronization.allowDeletions=true
synchronization.syncWhenMissingPeopleLogIn=true
synchronization.autoCreatePeopleOnLogin=false ldap.synchronization.groupQuery=(objectclass\=groupOfNames)
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=groupOfNames)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(&(objectclass\=inetOrgPerson)(|(memberOf\=cn\=alfresco_admin,ou\=Alfresco,ou\=group,dc\=domain,dc\=com)(memberOf=cn\=alfresco_user,ou\=Alfresco,ou\=group,dc\=domain,dc\=com)))
ldap.synchronization.personDifferentialQuery=(&(objectclass\=inetOrgPerson)(|(memberOf\=cn\=alfresco_admin,ou\=Alfresco,ou\=group,dc\=domain,dc\=com)(memberOf=cn\=alfresco_user,ou\=Alfresco,ou\=group,dc\=domain,dc\=com))(!(modifyTimestamp<\={0})))
ldap.synchronization.groupSearchBase=ou\=Alfresco,ou\=group,dc\=domain,dc\=com
ldap.synchronization.userSearchBase=ou\=user,dc\=domain,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=largeHomeFolderProvider ldap.synchronization.groupIdAttributeName=cn ldap.synchronization.groupDisplayNameAttributeName=description ldap.synchronization.groupType=groupOfNames ldap.synchronization.personType=inetOrgPerson ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true ldap.authentication.java.naming.read.timeout=0 ldap.authentication.java.naming.referral=follow
ldap.synchronization.userAccountStatusProperty=pwdAccountLockedTime ldap.synchronization.disabledAccountPropertyValue=000001010000Z ldap.synchronization.disabledAccountPropertyValueCanBeNull=true ldap.synchronization.userAccountStatusInterpreter=ldapUserAccountStatusInterpreter

Cordialement.

Pierre.

2 REPLIES 2

ycoulon
Employee
Employee

Bonjour,

Je pense que le problème vient de la requête :

ldap.synchronization.personQuery=(&(objectclass\=inetOrgPerson)(|(memberOf\=cn\=alfresco_admin,ou\=Alfresco,ou\=group,dc\=domain,dc\=com)(memberOf=cn\=alfresco_user,ou\=Alfresco,ou\=group,dc\=domain,dc\=com))) 
ldap.synchronization.personDifferentialQuery=(&(objectclass\=inetOrgPerson)(|(memberOf\=cn\=alfresco_admin,ou\=Alfresco,ou\=group,dc\=domain,dc\=com)(memberOf=cn\=alfresco_user,ou\=Alfresco,ou\=group,dc\=domain,dc\=com))(!(modifyTimestamp<\={0}))) 

Avez-vous tester cette requête sur votre serveur LDAP ? Retourne-t-elle uniquement les utilisateurs que vous attendez ?

Références :

https://docs.alfresco.com/community/concepts/auth-ldap-props.html

mavidot
Champ on-the-rise
Champ on-the-rise

Bonjour,

Je pense que c'est dû à l'authentification LDAP qui est activée. C'est elle qui va vérifier l'existence de l'utilisateur dans l'openLDAP au moment où il se connecte. S'il existe dans l'annuaire Alfresco créé un utilisateur correspondant dans sa base (uniquement avec le minimum de propriétés requis)

Essayez en passant la propriété suivante à "false" :

ldap.authentication.active=false

Du coup, seuls les utilisateurs synchronisés depuis openLDAP et donc présents dans Alfresco grâce à la synchro (et uniquement ceux-là) devraient pouvoir s'authentifier.

Edit :

à priori il existe d'autres propiétés pour empêcher la création automatique d'utilisateurs

create.missing.people=false
synchronization.autoCreatePeopleOnLogin=false
synchronization.syncWhenMissingPeopleLogIn=false

j'ignore leur portée à cet instant. Mais peut-être que ces propriétés combinées à l'authentification LDAP active pourraient résoudre votre problème.