Thread Daten eines Users aus dem AD auslesen: Userdaten aus AD auslesen (5 answers)
Opened by it12lsp at 2005-10-24 18:22

it12lsp
 2005-10-26 15:51
#33707 #33707
User since
2005-10-24
2 Artikel
BenutzerIn
[default_avatar]
Hallo,

habe durch langes recherchieren folgende Lösung selbst gefunden:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use strict;
use Net::LDAP;
use Data::Dumper;

###############################################
# Account to bind to LDAP (Active Directory) #
# non-priviledged (could even be a guest account)
###############################################
my $account = 'cn=someuser, ou=someou, DC=my, DC=ad_domain, DC=com';
my $pwd = 'secret';
my $userid ='userid'; # Search User-ID

my %all_users;

############################################
# Bind to LDAP and query for DHCP servers #
############################################
my $ldap = Net::LDAP->new( 'mydc.ad_domain.com' ) or die "$@";
my $mesg = $ldap->bind( $account,
password => $pwd
);
$mesg = $ldap->search( # perform a search
base => "ou=someou, DC=my, DC=ad_domain, DC=com",
filter => "(&(objectclass=user)(samAccountname=$userid))"
);

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

##################################################
# retrieve the properties from the results #
##################################################
my $max = $mesg->count;
for ( my $i = 0; $i < $max; $i++ ) {
my $entry = $mesg->entry ( $i );
my $userid = $entry->get_value('samAccountname');
$all_users{$userid}{'first_name'} = $entry->get_value( 'givenName' );
$all_users{$userid}{'last_name'} = $entry->get_value( 'sn' );
$all_users{$userid}{'phone'} = $entry->get_value( 'telephoneNumber' );
}

################################
# unbind from LDAP #
################################
$mesg = $ldap->unbind;

print Dumper(\%all_users);


Wichtig ist, falls der Server kein anonymes Binden zulässt, erstmal sich mit einenm minder-privilegierten Account "anzumelden"

Dazu braucht man dessen cn (siehe oben), man kann ihn auch im MS MMC "Users and Computers" sehen, wenn man "Advanced View" aktiviert und dann auf den "Object" Reiter eines Users geht.

Dann muss man festlegen, wo man starten will mit der Suche. Wenn alle User Objekte zum Beispiel in der OU someou liegen, dann ab da starten, dann geht die Suche schneller. Als Filter legt man dann noch objectclass=user fest, damit nur User Objekte gefunden werden.

Die liest man dann einfach aus.

Wie die AD-Attribute heissen, kann man hier: http://www.kouti.com/tables/userattributes.htm nachlesen.

Also bei mir hat es funktioniert!

Gruß
Christian\n\n

<!--EDIT|it12lsp|1130327519-->

View full thread Daten eines Users aus dem AD auslesen: Userdaten aus AD auslesen