Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

LDAP - Bind funktioniert nicht

Frage Entwicklung PHP

Mitglied: Mean1312

Mean1312 (Level 1) - Jetzt verbinden

19.06.2007, aktualisiert 20.06.2007, 10035 Aufrufe, 8 Kommentare

Will auf AD-Server zugreifen; Admin-Rechte vorhanden; LDAP_Connect() erfolgreich; Bind: "Invalid Credentials"

Hallo

ich versuche gerade per PHP-Script auf die AD über das Intranet (von einem Testserver: ISS, PHP5) zuzugreifen.

Wenn ich lediglich ldap_connect() mache meldet mir ldap_errors "success". Will ich dann an den Server binden kommt die Meldung "Invalid Credentials".

Ich habe Admin-Rechte auf die AD und komme über RDC problemlos auf den Server.

Die Struktur der Test-AD sieht folgendermaßen aus:

Domain: domain.test
1. OU in domain.test: DE
1. OU in DE: Standort
1. OU in Standort: Users

Hat jemand eine Idee, woran das liegt (denke mal an dem Domain-OU-Pfad); hab auch schon Beispielklassen für die Verbindung verwendet, aber ging alles irgendwie nicht.

01.
 
02.
 
03.
// LDAP variables 
04.
 
05.
$ldap['user']              = 'ldapUser'; 
06.
 
07.
$ldap['pass']              = 'ldapPass'; 
08.
 
09.
$ldap['host']              = '00.00.00.00'; 
10.
 
11.
$ldap['port']              = 389; 
12.
 
13.
$ldap['dn']          		= 'cn='.$ldap['user'].',ou=Users,ou=Standort,dc=domain,dc=test'; 
14.
 
15.
$ldap['base']              = ''; 
16.
 
17.
  
18.
 
19.
// connecting to ldap 
20.
 
21.
$ldap['conn'] = ldap_connect($ldap['host'], $ldap['port']) 
22.
 
23.
       or die( "Could not connect to {$ldap['host']}" ); 
24.
 
25.
  
26.
 
27.
// binding to ldap 
28.
 
29.
$ldap['bind'] = ldap_bind( $ldap['conn'], $ldap['dn'], $ldap['pass'] ); 
30.
 
31.
  
32.
 
33.
 
34.
echo ldap_error($ldap['conn']);
Vielen Dank und Grüße,

Dirk
Änderungen:
Hab den Code in einen Codeblock gepackt
masterG(Moderator) 19.06.2007
Mitglied: Mean1312
19.06.2007 um 11:30 Uhr
Hallo nochmal,

also: War mein Fehler, da ich ausversehen, statt benutzer@domain.test nur benutzer als Benutzername verwendet habe. In VBScript ging das, deshalb war ich der Meinung, daß es auch in PHP gehen würde...

Also das binden funktioniert jetzt schon mal. Was ich jetzt aber noch lösen muß (dachte, daß sich das mehr oder weniger ergeben würde, wenn der Login klappt):

Das ganze soll als Autentisierung für bestimmte Bereiche des Intranet benutzt werden. Nun sollen aber z.B. nur die Leute, die in der Netzwerker- und die, die in der Softwaregruppe sind (bei der Abfrage müßte ich irgendwie vermerken, in welcher Gruppe der Login-User ist). Wie kann ich das denn aus den Gruppen auslesen/test? Geht das irgendwie?

Danke und Grüße,

Dirk
Bitte warten ..
Mitglied: sihelpdesk
19.06.2007 um 11:37 Uhr
HI..

Also erstens solltest du schauen, dass deine Verbindung zur LDAP DB überhaupt funktioniert.

Am besten mit:

01.
 
02.
// LDAP Konfiguration 
03.
$ldapadmin         = "user@domain-name"; //Admin-Abfragebenutzer 
04.
$ldapadminpw       = ""; //Admin-Passwort 
05.
$ds                = "testserver1"; //LDAP-Server 
06.
$dn                = "ou=Ordner,dc=google,dc=ch"; //LDAP-Root OU  
07.
$ldapport          = 389;  //LDAP-Port 
08.
 
09.
// LDAP Verbindung aufbauen 
10.
$ldapconn = ldap_connect($ds, $ldapport)or die("Could not connect to LDAP server."); 
11.
 
12.
// Verbindungs-Test 
13.
  if ($ldapconn
14.
15.
  	  // LDAP Bind herstellen 
16.
	  ldap_set_option($ldapconn, LDAPPT_PRTCL_VERSIN,3); 
17.
	  ldap_set_option($ldapconn, LDAPPT_REFERRALS,0); 
18.
	  $ldapbind = ldap_bind($ldapconn, $ldapadmin, $ldapadminpw); 
19.
 
20.
	  // Authorisierungs-Test 
21.
	  if ($ldapbind
22.
23.
                 echo "cool"
24.
 
25.
          } else
26.
          
27.
                 echo "nicht cool"
28.
 
29.
30.
 
Nun wenn das funktioniert, kannst du weiter mit Filter und der Funktion ldap_search(), ldap_sort() und ldap_get_entries() arbeiten.

Liebe Grüsse

Goran
[EDIT 19.06.2007]
Hab den Code in einen Codeblock gepackt!
masterG(Moderator)
Bitte warten ..
Mitglied: sihelpdesk
19.06.2007 um 11:54 Uhr
Hallo nochmal,

also: War mein Fehler, da ich ausversehen,
statt benutzer@domain.test nur benutzer als
Benutzername verwendet habe. In VBScript ging
das, deshalb war ich der Meinung, daß
es auch in PHP gehen würde...

Also das binden funktioniert jetzt schon
mal. Was ich jetzt aber noch lösen
muß (dachte, daß sich das mehr
oder weniger ergeben würde, wenn der
Login klappt):

Das ganze soll als Autentisierung für
bestimmte Bereiche des Intranet benutzt
werden. Nun sollen aber z.B. nur die Leute,
die in der Netzwerker- und die, die in der
Softwaregruppe sind (bei der Abfrage
müßte ich irgendwie vermerken, in
welcher Gruppe der Login-User ist). Wie kann
ich das denn aus den Gruppen auslesen/test?
Geht das irgendwie?

Danke und Grüße,

Dirk

Damit du das hinkriegst,
musst du im Filter einen User definieren, dessen Gruppenangehörigkeiten auslesen, und diese Auf die Gewünschte Gruppe überprüfen.
$filter = "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(samaccountname=".$userid."))";
$fields = array("memberof");
$sr = ldap_search($ldapconn, $dn, $filter, $fields);
$data = ldap_get_entries($ldapconn, $sr);
Nun solltest du in $data[0]["memberof"] die Liste aller Gruppen dessen der Benutzer angehört haben.

Lg.
Bitte warten ..
Mitglied: Mean1312
19.06.2007 um 12:25 Uhr
Hi sihelpdesk und Goran,

vielen Dank für eure Antworten!

@sihelpdesk: Super, das ist ja (fast) schon die fertige Lösung ;)

@Goran: Danke für den Tipp! So eine Prüfung habe ich bereits drin - hab das aber nur weggelassen, weil ich alles (für die Anfrage) unnötige aus dem Script raushalten wollte...

Vielen Dank nochmals und Grüße,

Dirk
Bitte warten ..
Mitglied: sihelpdesk
19.06.2007 um 12:28 Uhr
ahja.. dabei noch sehr wichtig bei ADS!

Vor dem ldap_connect()

solltest du noch folgende zwei optionen setzten

ldap_set_option($ldapconn, LDAPPT_PRTCL_VERSIN,3);
ldap_set_option($ldapconn, LDAPPT_REFERRALS,0);

Ohne die habe ichs nicht hingekriegt ^^
viel spass
Bitte warten ..
Mitglied: Mean1312
19.06.2007 um 13:37 Uhr
Hi sihelpdesk,

danke für den Tipp - muß das aber doch hinter den connect setzen -> sonst habe ich das $ldapconn ja noch nicht?!?! Hab's übrigens schon in der gefundenen Klasse drin stehen... ;)

Noch eine Frage: Und zwar liest er mir die Benutzer nur dann aus, wenn ich ihn bei mind. 2 Gruppen eingetragen habe. Kann ich das irgendwie umgehen?

Zu deinem Filter noch eine Frage: mit $userid meinst du doch einen Namen, im Aufbau meines Login-Namens (wenn ich z.B. mich in der AD suche, dann mache ich dh@domain.test?!?!) weil irgendwie findet er da nie was...

Wenn ich es so mache: $filter = "(&(|(objectClass=user))(objectCategory=person)(cn=Vorname Nachname))"; dann findet er die Gruppenzugehörigkeiten. Ich will aber ja, daß sich die User mit ihrem Windows-Login einloggen können - also müßte ich schon die $userid nehmen...

Danke und Grüße,

Dirk
Bitte warten ..
Mitglied: sihelpdesk
19.06.2007 um 13:43 Uhr
Hi Dirk

Wegen dem Filter:
01.
$filter = "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(samaccountname=".$userid."))";
smaaccountname steht für den effektiven LOGIN-Namen (Der Anmeldename beim Logon)

Hier findest du die Feldbezeichnungen von ADS Objekten:
http://www.faq-o-matic.net/content/view/60/45/

Wegen deiner Frage betreffend den Gruppen.
Du hast geschrieben: "Und zwar liest er mir die Benutzer nur dann aus, wenn ich ihn bei mid. 2".
Mit diesem Vorgehen liest du ja keine Benutzer aus, sondern nur die Gruppen des Benutzers.

Lg.
Bitte warten ..
Mitglied: Mean1312
20.06.2007 um 09:34 Uhr
Hi,

habe die Attribut-Bezeichnung für den Benutzernamen gefunden. Das Zauberwort heißt "userPrincipalName" - falls nochmal jemand per Suchfunktion danach sucht... ;)

Grüße,

Dirk
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Router & Routing
Transparenter Proxy funktioniert nicht? (1)

Frage von mrserious73 zum Thema Router & Routing ...

Linux
LTSP: PXE Boot funktioniert nicht (23)

Frage von Fenris14 zum Thema Linux ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...