SSO et Synchronisation LDAP-AD

cancel
Showing results for 
Search instead for 
Did you mean: 
ymolinet
Member II

SSO et Synchronisation LDAP-AD

Bonjour,

Je découvre Alfresco (plus habitué à Sharepoint) et je viens d'installer la version Community 4.2c.
Je l'ai configuré en SSO NTLM sur mon Active Directory (passthru) et j'ai configuré la synchronisation AD (ldap-ad). Tout ceci fonctionne bien.

Au niveau de la synchronisation AD, je peux gérer des filtres des comptes ou des groupes que je souhaite synchroniser. Par contre, je remarque qu'avec le passthru, tous les utilisateurs AD peuvent se connecter. Il ne semble pas y avoir de paramètres pour limiter les utilisateurs autorisés à se connecter.

Est-il possible de configurer le passthru avec des filtres LDAP ? sinon qu'elle sera la meilleure méthode ?

Merci de votre aide.
Yannick
7 Replies
ymolinet
Member II

Re: SSO et Synchronisation LDAP-AD

En fait, ce comportement n'est pas normal !
Quelques aménagement dans les paramètres de ma synchronisation ldap ont corrigés le problème.
jeanw
Member II

Re: SSO et Synchronisation LDAP-AD

Bonjour,
Je rencontre le même problème, quels sont les paramètres de synchronisation que tu as utilisé?

Merci d'avance
ymolinet
Member II

Re: SSO et Synchronisation LDAP-AD


authentication.chain=passthru1:passthru,ldap-ad1:ldap-ad,alfrescoNtlm1:alfrescoNtlm
alfresco.authentication.allowGuestLogin=false
alfresco.authentication.authenticateCIFS=false
ntlm.authentication.sso.enabled=true
ntlm.authentication.mapUnknownUserToGuest=false
passthru.authentication.useLocalServer=false
passthru.authentication.domain=
passthru.authentication.servers=DOMAIN.LOCAL\\IPDC,IPDC
passthru.authentication.guestAccess=false
passthru.authentication.defaultAdministratorUserNames=Administrateur
#Timeout value when opening a session to an authentication server, in milliseconds
passthru.authentication.connectTimeout=5000
#Offline server check interval in seconds
passthru.authentication.offlineCheckInterval=300
passthru.authentication.protocolOrder=TCPIP
passthru.authentication.authenticateCIFS=true
passthru.authentication.authenticateFTP=true
ldap.authentication.active=false
ldap.authentication.java.naming.security.authentication=simple
ldap.synchronization.active=true
ldap.authentication.userNameFormat=%s
ldap.authentication.allowGuestLogin=false
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://IPDC:3268
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.synchronization.java.naming.security.principal=moncompteadmin
ldap.synchronization.java.naming.security.credentials=monmotdepasse
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.groupQuery=(&(objectclass\=group)(memberOf\=cn\=Groupes Alfresco,ou\=Security Groups,ou\=MyBusiness,dc\=domain,dc\=local))
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(memberOf\=cn\=Groupes Alfresco,ou\=Security Groups,ou\=MyBusiness,dc\=domain,dc\=local)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(&(objectclass\=user)(memberOf\=CN\=Collaborateurs Alfresco,OU\=Security Groups,OU\=MyBusiness,DC\=domain,DC\=local)(userAccountControl\:1.2.840.113556.1.4.803\:\=512))
ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(memberOf\=CN\=Collaborateurs Alfresco,OU\=Security Groups,OU\=MyBusiness,DC\=domain,DC\=local)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(modifyTimestamp$
ldap.synchronization.groupSearchBase=dc\=domain,dc\=local
ldap.synchronization.userSearchBase=dc\=domain,dc\=local
ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'.0Z'
ldap.synchronization.userIdAttributeName=sAMAccountName
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=company
ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupType=group
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
synchronization.synchronizeChangesOnly=false
### Force la resynchronisation des comptes toutes les heures
synchronization.import.cron=0 1 * * * ?
synchronization.syncWhenMissingPeopleLogIn=true
synchronization.autoCreatePeopleOnLogin=false


Tu dois remplace IPDC par l'adresse IP de ton contrôleur AD et DOMAIN par le nom de ton AD.
jeanw
Member II

Re: SSO et Synchronisation LDAP-AD

Merci pour votre réponse, mais mon problème n'est toujours pas résolu :/
Je suis sur une version community 4.2.c dans un domaine AD tournant sur Win Server2k8 r2.
Mes utilisateurs AD se connectent tous et c'est là le problème, je veux juste que ce soit les utilisateurs de mon cn= People.
Voici ma conf

## Authentification chain
authentication.chain=passthru1:passthru,ldap-ad1:ldap-ad,alfrescoNtlm1:alfrescoNtlm

#NTLM Filter.
########################
ntlm.authentication.mapUnknownUserToGuest=false
ntlm.authentication.sso.enabled=true

#Alfresco Filter.
########################
alfresco.authentication.allowGuestLogin=false
alfresco.authentication.authenticateCIFS=false
#
#Passthru authentication. 
#########################

passthru.authentication.allowGuestLogin=false
passthru.authentication.authenticateCIFS=true
passthru.authentication.authenticateFTP=true
passthru.authentication.guestAccess=false
passthru.authentication.servers=mydomain.com
passthru.authentication.domain=
passthru.authentication.useLocalServer=false
passthru.authentication.defaultAdministratorUserNames=user1,user2
passthru.authentication.connectTimeout=5000
passthru.authentication.offlineCheckInterval=300
passthru.authentication.protocolOrder=TCPIP,NETBIOS
# LDAP Configuration
########################

## Authentification part
ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@mydomain.com
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://mydomain.com:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.java.naming.read.timeout=0

## Synchronization part
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=adminUser@mydomain.com
ldap.synchronization.java.naming.security.credentials=adminPass
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.attributeBatchSize=1000
ldap.synchronization.groupQuery=(&(objectclass\=group)(memberOf\=cn\=Groups,ou\=GED,dc\=mydomain,dc\=com))
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(memberOf\=cn\=Groups,ou\=GED,dc\=mydomain,dc\=com)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(&(objectclass\=user)(memberOf\=cn\=People,ou\=GED,dc\=mydomain,dc\=com)(userAccountControl\:1.2.840.113556.1.4.803\:\=512))
ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(memberOf\=cn\=People,ou\=GED,dc\=mydomain,dc\=com)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(whenChanged<\={0})))
ldap.synchronization.groupSearchBase=dc\=mydomain,dc\=com
ldap.synchronization.userSearchBase=dc\=mydomain,dc\=com
ldap.synchronization.modifyTimestampAttributeName=whenChanged
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'.0Z'
ldap.synchronization.userIdAttributeName=sAMAccountName
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=company
ldap.synchronization.defaultHomeFolderProvider=largeHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupDisplayNameAttributeName=displayName
ldap.synchronization.groupType=group
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true

## force synchro toutes les heures
synchronization.import.cron=0 1 * * * ?
synchronization.syncWhenMissingPeopleLogIn=true
synchronization.autoCreatePeopleOnLogin=false
synchronization.synchronizeChangesOnly=false

Si quelqu'un a une idée de ce qu'il faut faire, je suis preneur.

Merci d'avance
JeanW
rguinot
Customer

Re: SSO et Synchronisation LDAP-AD

Bonjour,

Etes vous sur de vos filtres LDAP ? A noter que pour les requêtes différentielles, pour l'un vous avez modifyTimestamp, pour l'autre whenChanged. est-ce correct ?

Suivant http://wiki.alfresco.com/wiki/The_Synchronization_Subsystem#Configuration, en ayant synchronization.autoCreatePeopleOnLogin=false (ce qui semble être votre cas), cele peut vous permettre de restreindre les login uniquement aux utilisateurs correspondant aux filtres de synchronisation que vous avez mis en place, d'ou ma question. Cela dit je ne suis pas certain que cela s'applique egalement au passthru.
jeanw
Member II

Re: SSO et Synchronisation LDAP-AD

Merci pour vos remarques, je fais des essais tout de suite.
jeanw
Member II

Re: SSO et Synchronisation LDAP-AD

Bonjour,
Je reviens à nouveau parce que j'ai toujours pas le résultat attendu à savoir : limiter l'authentification des users à un groupe de mon domaine AD.
J'ai modifié un peu l'arbre de mon AD, je me retrouve avec l'arbre suivant:
    ou = GED
      /      \
ou =Groups  ou= People
cn= myGroup  cn= toto, cn= tata

niveau conf, j'ai ceci

## Authentification chain
authentication.chain=alfrescoNtlm1:alfrescoNtlm,passthru1:passthru,ldap-ad1:ldap-ad
## ntlm filter
ntlm.authentication.sso.enabled=true
ntlm.authentication.mapUnknownUserToGuest=false
ntlm.authentication.browser.ticketLogons=true
## Passthru Configuration
passthru.authentication.allowGuestLogin=false
passthru.authentication.authenticateCIFS=true
passthru.authentication.authenticateFTP=false
passthru.authentication.guestAccess=false
passthru.authentication.servers=myDomain\\myIPDC
passthru.authentication.domain=
passthru.authentication.useLocalServer=false
passthru.authentication.defaultAdministratorUserNames=AD_Users
passthru.authentication.connectTimeout=5000
passthru.authentication.offlineCheckInterval=300
passthru.authentication.sessionCleanup=true
passthru.authentication.protocolOrder=TCPIP,NETBIOS

# LDAP Configuration
########################
## Authentification part
ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@myDomain.com
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://myDomain.com:389
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.java.naming.read.timeout=0
##Synchronization part
ldap.synchronization.java.naming.security.authentication=simple
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=Administrator@myDomain.com
ldap.synchronization.java.naming.security.credentials=adminPASS
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.attributeBatchSize=1000
ldap.synchronization.groupQuery=(&(objectclass\=group))
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512))
ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(modifyTimestamp<\={0})))
ldap.synchronization.groupSearchBase=ou\=Groups,ou\=GED,dc\=myDomain,dc\=com
ldap.synchronization.userSearchBase=ou\=People,ou\=GED,dc\=myDomain,dc\=com
ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'.0Z'
ldap.synchronization.userIdAttributeName=sAMAccountName
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=company
ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupDisplayNameAttributeName=displayName
ldap.synchronization.groupType=group
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true
## force synchro toutes les heures
synchronization.import.cron=0 1 * * * ?
synchronization.syncWhenMissingPeopleLogIn=true
synchronization.autoCreatePeopleOnLogin=false
synchronization.synchronizeChangesOnly=false

Avec ceci, j'arrive à synchroniser les utilisateurs et les groupes que je veux sans erreurs mais l'authentification est toujours possible par tous les utilisateurs de l'AD.

Est ce tout simplement impossible à faire ou pas?
Cdlt