10-23-2019 10:10 AM
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.
11-14-2019 10:10 AM
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
12-24-2019 09:52 AM
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.
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.