authentification LDAP sans UID dans le DN

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

authentification LDAP sans UID dans le DN

Bonjour,
Est-il possible de s'authentifier par LDAP sans que l'UID ne fasse partie du DN.
J'arrive à me connecter avec un LDAP contenant l'UID dans le DN, mais pas lorsque c'est un simple attibut et que le DN est constitué du CN.

Merci d'avance !
5 Replies
rguinot
Customer

Re: authentification LDAP sans UID dans le DN

Bonjour,

Il serait judicieux de préciser quelle version d'Alfresco vous utilisez.
Votre question n'est pas extrêmement claire, mais à mon avis, ce qui peut vous aider c'est le 'search and bind', c'est à dire :

# If not set, an LDAP query involving ldap.synchronization.personQuery and ldap.synchronization.userIdAttributeName will
# be performed to resolve the DN dynamically. This allows directories to be structured and doesn't require the user ID to
# appear in the DN.
ldap.authentication.userNameFormat=uid\=%s,ou\=person,dc\=test,dc\=alfresco,dc\=com

Autrement dit, il vous est possible en laissant vide userNameFormat de résoudre le DN de l'utilisateur qui cherche à se logger en effectuant, préalablement au login, une requête combinant ldap.synchronization.personQuery et ldap.synchronization.userIdAttributeName pour déterminer le DN à partir de cette requête. Bien entendu, celle-ci ne doit retourner qu'un seul résultat. Cela permet également de récuperer des utilisateurs situés dans plusieurs OU de même niveau hiérarchique disjoints.
rjarry
Member II

Re: authentification LDAP sans UID dans le DN

Merci pour votre réponse. j'avais déjà vu une réponse de vous sur ce même sujet.
Vous avez effectivement mieux reformulé ma question.
Je suis en version Alfresco Lab 3 stable.
Mon souci est que je ne parviens pas à m'authentifier même en ne positionnant pas l'attibut ldap.authentication.userNameFormat.

Voici mon log ldap (openldap) :

Oct 21 14:17:56 ldap1 slapd[5722]: >>> slap_listener(ldap:///)
Oct 21 14:17:56 ldap1 slapd[5722]: connection_get(29): got connid=104989
Oct 21 14:17:56 ldap1 slapd[5722]: connection_read(29): checking for input on id=104989
Oct 21 14:17:56 ldap1 slapd[5722]: ber_get_next on fd 29 failed errno=11 (Resource temporarily unavailable)
Oct 21 14:17:56 ldap1 slapd[5722]: do_bind
Oct 21 14:17:56 ldap1 slapd[5722]: >>> dnPrettyNormal: <${ldap.authentication.userNameFormat}>
Oct 21 14:17:56 ldap1 slapd[5722]: bind: invalid dn (${ldap.authentication.userNameFormat})
Oct 21 14:17:56 ldap1 slapd[5722]: send_ldap_result: conn=104989 op=0 p=3
Oct 21 14:17:56 ldap1 slapd[5722]: send_ldap_response: msgid=1 tag=97 err=34
Oct 21 14:17:56 ldap1 slapd[5722]: connection_get(29): got connid=104989
Oct 21 14:17:56 ldap1 slapd[5722]: connection_read(29): checking for input on id=104989
Oct 21 14:17:56 ldap1 slapd[5722]: ber_get_next on fd 29 failed errno=0 (Success)
Oct 21 14:17:56 ldap1 slapd[5722]: connection_closing: readying conn=104989 sd=29 for close
Oct 21 14:17:56 ldap1 slapd[5722]: connection_close: conn=104989 sd=-1

Je ne vois pas passer le login saisi.

Voici les fichiers de configuration :
ldap-authentication.properties :
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://xx.xx.x.xx:389
ldap.authentication.java.naming.security.authentication=simple
#ldap.authentication.java.naming.security.principal=reader
#ldap.authentication.java.naming.security.credentials=secret
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false

ldap-synchronisation.properties :
ldap.synchronization.active=false
ldap.synchronization.java.naming.security.principal=cn=myaccount,o=myorg,c=fr,o=people,dc=societe,dc=com
ldap.synchronization.personQuery=(objectclass=person)
ldap.synchronisation.personSearchBased=dc=roullier,dc=com
ldap.synchronisation.userIdAttributeName=uid
ldap.synchronisation.userFirstNameAttributeName=givenName
ldap.synchronisation.userLastNameAttributeName=sn
ldap.synchronisation.userEmailAttributeName=mail
ldap.synchronisation.userOrganizationalIdAttributeName=o
ldap.synchronisation.defaultHomeFolderProvider=personalHomeFolderProvider
ldap.synchronisation.groupQuery=(objectclass=groupOfNames)
ldap.synchronisation.groupSearchBase=dc=roullier,dc=com
ldap.synchronisation.groupIdAttributeName=cn
ldap.synchronisation.groupType=groupOfNames
ldap.synchronisation.personType=inetOrgPerson
ldap.synchronisation.groupMemberAttributeName=member
ldap.synchronisation.import.person.cron=0 0 * * * ?
ldap.synchronisation.import.group.cron=0 30 * * * ?
ldap.synchronisation.import.group.clearAllChildren=true

Cordialement.
rjarry
Member II

Re: authentification LDAP sans UID dans le DN

Il ne semble pas y avoir le search avant le bind.
rguinot
Customer

Re: authentification LDAP sans UID dans le DN

Ceci s'applique aux versions 3.2 et supérieurs. Sauf erreur, vous êtes en 3.0. Il faudrait migrer en version plus récente pour profiter de cette fonctionnalité. Voir http://wiki.alfresco.com/wiki/General_Upgrade_Process
rjarry
Member II

Re: authentification LDAP sans UID dans le DN

Merci beaucoup pour cette information. Je suis bien en 3.0 (3.0.0 stable 1526 schema 100). Je vais donc envisager une migration…
Cordialement.