2016-09-28 5 views
0

Je vais récupérer les informations d'utilisateur d'un serveur LDAP. Client m'a envoyé suivant trois données:Est-il possible d'afficher la structure du dossier ldap avec Perl?

  1. LDAP IP du serveur
  2. Nom d'utilisateur à authentifier
  3. mot de passe pour authentifier

C'est la 1ère fois que je travaille avec LDAP donc j'ai étudié là-dessus. Je vois que je dois utiliser des paramètres comme cn, dc, ou. Le client ne devrait-il pas donner cette information non plus? Ou l'information du client est-elle suffisante et puis-je trouver ces paramètres par un code affichant la structure du dossier?

+0

De quel type de répertoire il s'agit? À quoi ressemble le nom d'utilisateur fourni? – EricLavault

+0

Je vais récupérer les informations de l'utilisateur. Je ne connais pas d'autres informations. Ma question est de savoir si je dois demander cela au client ou s'il existe un moyen de voir la hiérarchie des répertoires du serveur LDAP –

+0

Il vaudrait mieux que vous sachiez sur quel type de répertoire vous travaillez, surtout si vous n'êtes pas à l'aise avec LDAP. Vous pouvez le deviner une fois que vous avez réussi à lire certaines entrées cependant. Avez-vous réussi à lier et effectuer une recherche sur elle? – EricLavault

Répondre

0

La structure que vous voulez voir s'appelle l'arborescence de répertoires et est faite de LDAP "entrées" (pas de dossiers).

Vous devriez être en mesure de collecter des entrées de votre répertoire à condition que les informations d'identification que vous avez données sont suffisantes. Pour cela vous avez besoin d'une bibliothèque client, vous pouvez utiliser Perl LDAP.

En utilisant cette bibliothèque que vous feriez quelque chose comme:

use Net::LDAP; 

# Init connection and bind to the directory. 
$ldap = Net::LDAP->new('ldaphost.example.com') or die "[email protected]"; 
$mesg = $ldap->bind ($binddn, password => $password); 

# Perform a search on the whole tree below (and including) the base object. 
$mesg = $ldap->search(base => $basedn); 

# Handle error 
$mesg->code && die $mesg->error; 

# Display results 
foreach $entry ($mesg->entries) { $entry->dump; } 

$mesg = $ldap->unbind; 

Le code ci-dessus simplement imprimer des entrées à la sortie standard ($ entry-> dump).

  • $binddn est le dn à authentifier avec. Si vous avez reçu un simple nom d'utilisateur qui n'est pas un dn, comme "nom d'utilisateur" au lieu de quelque chose comme uid=username,dc=example,dc=com, cela signifierait probablement que vous avez affaire à Active Directory. Dans ce cas, vous pouvez essayer de lier avec un binddn correspondant au modèle suivant: '[email protected]'.
  • basedn est le dn de l'entrée de l'objet de base, la recherche est effectuée sur l'arbre entier ci-dessous (et y compris) l'objet de base. Vous devrez spécifier une base de données valide.

Vous pouvez essayer de deviner quelle base dn utiliser. Les composants de domaine (dc) correspondent généralement au nom de domaine complet, mais il n'est pas garanti qu'il aboutisse à une base dn valide (par exemple 'ldaphost.example.com' donnerait 'dc=example,dc=com'). Cependant, vous pouvez interroger le serveur pour obtenir des informations rootDSE et récupérer le namingContexts (ou defaultNamingContext le cas échéant) et utiliser un d'entre eux comme la base dn:

$ldap->search(base => '', attrs => 'namingContexts'); 

Cela dit, si vous voulez vraiment afficher l'arborescence, vous mieux vaut aller avec un explorateur LDAP comme Apache Directory Studio.

Notez que LDAP ne se limite pas au stockage d'informations dans des structures "arborescentes" strictes, il doit juste respecter une nomenclature DIT (Directory Information Tree).