Forum Linux.suse Opendap sasl Acitve Directory

Posté par .
Tags : aucun
1
18
nov.
2010
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 . Évalué à 3.

    pkoi ne pas utiliser le openldap comme serveur secondaire de l'AD.

    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
  • # On m'a demandé de passer.

    Posté par (page perso) . Évalué à 4.

    On m'a demandé de passer par ici : https://linuxfr.org/comments/1183703.html#1183703 , alors me voilà.
    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 . Évalué à 1.

      Merci pour vos réponses je vais approfondir le sujet. Pour info j'ai fait la même manipe sur une centos et sa fonctionne parfaitement l'authentification est réalisé avec succès.

      Je vais essayer de finaliser le projet et tester vos propositions

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.