Bonjour à tous,
je suis sur un projet d'authentification entre Openldap et Active Directory en passant par le SASL.
Je vous explique le flux. Je suis dans une société dont l'AD est géré par les US ma mission et de faire un Openldap mais l'authentification sera gérée par L'AD via le protocole SASL.
Environnement
Ad:Windows 2003
Openldap:OpenSuse 11.3
-Pour mes explication je vais nommer le domaine principal en Mydomain et les groupes sont
CMC et FR
-Mydomain>CMC>FR
Sur le serveur OpenLdap j'ai dupliqué toute l'arborescence de l'AD
-J'utilise aussi phpldapadmin
fonctionnement OK je vois les users et les groupes......
Info je ne suis pas Admin du domaine(géré par les US) mais mon compte me donne des droits qui sont presque administrateur
résultat de la commande du nmap sur le serveurADUS
############################
Not shown: 978 closed ports
PORT STATE SERVICE
42/tcp open nameserver
53/tcp open domain
88/tcp open kerberos-sec
111/tcp open rpcbind
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
1025/tcp open NFS-or-IIS
1029/tcp open ms-lsa
1070/tcp open unknown
1093/tcp open unknown
1098/tcp open unknown
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
3389/tcp open ms-term-serv
6129/tcp open unknown
7937/tcp open nsrexecd
7938/tcp open lgtomapper
############################
-J'ai aussi paramétré d'autres outil en opensource comme glpi et openfire(Jabber) et je rapatrie sans problème les login et les mot de passe sur les applications avec mon compte AD
J'arrive à extraire les Users et les groupes depuis l'AD en mettant la commande suivante et par la même occasion j'adapte le fichier pour le OpenLDAP
#ldapsearch -x -H ldap://ServeurAD -D "cn=UserAD,ou=FR,ou=cmc,dc=MydomainAD=com" -w 'passwdduuserAD' -b ou=fr,ou=cmc,dc=MydomainAD=com cn sn objectClass ou userPrincipalName -LLL | sed -e 's/^userPrincipalName: /userPassword: {SASL}/' | sed -e '/objectClass: user/d'
OK
-paramétrage est SASL OK
#testsaslauthd -u loginAD -p mdpAD
0: OK "Success."
La création du domain:OK
L'intérogation depuis mon serveur dans le domaine base=>OK
-Création du user test à la racine mydomain.com et dans mydomain>CMC>FR
#OK
-user test créer en local et qui n'existe pas dans l'AD à la racine
#ldapsearch -x -D "cn=test,dc=mydomain.com=com" -b "dc=mydomain=com" -w 'passwdusertest'
OK
1ère problème:
-user test crée en local et qui n'existe pas dans l'AD
L'intérogation depuis mon serveur dans le sous domaine FR=>NOK
#ldapsearch -x -D "cn=test TEST,ou=FR,ou=CMC,dc=mydomain.com=com" -b "dc=mydomain=com" -w 'passwdusertest'
ldap_bind: Invalid credentials (49)
Création d'un userAD sur openldap à la racine et dans son OU=>OK
2nd problème
Intérogation impossible pour le userAD à la racine et dans le OU
#ldapsearch -x -D "cn=UserAD,ou=FR,ou=CMC,dc=MydomainAD=com" -b "dc=MydomainAD=com" -w 'passwdduUserAD'
ldap_bind: Invalid credentials (49)
Je n'arrive pas à trouver la solution
voici un exemple de mes logs de /var/log/messages lors de ma tentative de connexion
#####################################################################################################
Nov 18 16:39:43 linux-llrq slapd[5078]: conn=1006 fd=13 ACCEPT from IP=[::1]:49479 (IP=[::]:389)
Nov 18 16:39:43 linux-llrq slapd[5078]: conn=1006 op=0 BIND dn="cn=UserAD,ou=FR,ou=CMC,dc=DomainADUS=com" method=128
Nov 18 16:39:43 linux-llrq slapd[5078]: conn=1006 op=0 RESULT tag=97 err=49 text=
Nov 18 16:39:43 linux-llrq slapd[5078]: conn=1006 fd=13 closed (connection lost)
########################################################################################################
voici mon fichier slapd.conf (sans les commentaires)
####################################################################################
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/yast.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
access to dn.exact="" by * read
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attrs=userPassword,userPKCS12
by self write
by * auth
access to attrs=shadowLastChange
by self write
by * read
access to *
by * read
sasl-host localhost
sasl-secprops none
database bdb
suffix "dc=catmktg,dc=com"
checkpoint 1024 5
cachesize 10000
rootdn "cn=Manager,dc=catmktg,dc=com"
rootpw {MD5}jKdBi8fA66x7KNhnvZYPWw==
directory /var/lib/ldap
index objectClass eq
#############################################################################################################
-Sur phpldapadmin
je consulte le userAD j'ai le champ "password" qui est bien crypté
voici un exemple du fichier ldif
###################################################################################
dn: CN=UserAD ,OU=FR,OU=CMC,DC=catmktg,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
cn: UserAD
sn: UserAD
userPassword: {SASL}UserAD@DomainAD.com
#####################################################################################
Je pense que j'ai mis l'essentiel pour la description du probléme. Si je résous le problème j'aimerai faire partager à la communauté et essayer de faire un wiki parceque sur le net je ne trouve pas beaucoup d'information
sur Openlap SASL et Active Directory
Merci pour votre aide
# faire la synchro et la recherche en locale
Posté par NeoX . Évalué à 3.
ainsi tu regles tes utilisateurs FR? pour venir chercher les credentials sur le openldap.
et quand un utilisateur est créé sur l'AD aux US?
c'est une replication qui doit avoir lieu pour recuperer les modifs dans le openldap local
[^] # Re: faire la synchro et la recherche en locale
Posté par hakhak91 . Évalué à 1.
Le but final est de pouvoir créer des proflis itinérant et éventuellement paramétrer NIS avec openldap
# On m'a demandé de passer.
Posté par Etienne Bagnoud (site web personnel) . Évalué à 4.
Bon j'ai pas tout compris à la question, mais premièrement pourquoi tu dupliques tes entrées entre deux annuaires ? La délégation est prévue par LDAP, si tu lis le manuel tu verras c'est fait pour.
De plus répliquer l'annuaire LDAP, je ne suis pas certain que AD et OpenLDAP stocke les mots de passe de la même façon et utilisent les mêmes algos de hash et/ou chiffrement, à vérifier (moi j'ai pas d'AD à disposition, donc tu peux regarder ça).
Bref, à mon avis tu délègues au serveur US (par ailleurs il me semble que AD utilise Kerberos, non ?). La seule certitude que j'ai au niveau de AD c'est que tu dois être en LDAPS pour accéder au mot de passe d'un utilisateur.
Et je sais que dans le manuel d'OpenLDAP il parle de la collaboration AD/OpenLDAP, tu as lu ce passage ?
"It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell
[^] # Re: On m'a demandé de passer.
Posté par hakhak91 . Évalué à 1.
Je vais essayer de finaliser le projet et tester vos propositions
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.