"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

php und domain controller

manalishi 04.04.2004 - 16:32 794 5
Posts

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
hallo leute!

ich habe ein ganz spezielles problem mit php und ldap. ich versuche schon seit längerer zeit, einen benutzer gegen einen windows 2000 (oder 2003, wwi) domain controller zu verifizieren. es kann zwar eine verbindung hergestellt werden, der bind auf den server schlägt aber leider immer fehl.

was muss ich tun? ldaps? wenn ja: was für ein zertifikat brauche ich? woher bekomme ich es?

der webserver, auf dem ich herumexperimentiere ist eine win2k kiste, auf der apache2 und mod_php laufen. ist eine stinknormale xampp installation ohne jeglichen cache oder sowas.

besten dank :)

spunz

Super Moderator
Super Moderator
Avatar
Registered: Aug 2000
Location: achse des bösen
Posts: 11241
ka ob es auch unter apache/win32 geht, aber pam smb wäre ne möglichkeit.

http://www.google.com/search?q=apac...-8&oe=utf-8

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
hmmm....
leider schauts mit pam eher schlecht aus (gibts für win32 afaik nicht). übrigens bin ich auf diese anforderungen von ms gestoßen:
http://support.microsoft.com/defaul...Ben-us%3B321051

BuSHidO

ist süß
Registered: Jul 2001
Location: galaxie
Posts: 542
quatsch ...

php hat ein LDAP modul integriert
http://www.perlunity.de/php/manual/ref.ldap.shtml
Zitat
Hinweis für Win32 Benutzer: Um dieses Modul unter Windows nutzen zu können, müssen Sie libsasl.dll aus dem DLL Ordner des PHP/Win32 Packets in den SYSTEM32 Ordner Ihres Systems kopieren (z.B.: C:\WINNT\SYSTEM32 oder C:\WINDOWS\SYSTEM32).

Wichtig ist dabei das du zu deinem userobjekt mit dem du dich gegen das AD authentifizieren willst 100%ig den richtige Pfad angibst.
Ob du generell hinkommst überprüfst du mit einem anonymen bind.

Beispiel von http://www.perlunity.de

Code:
<?php
// Grundlegende Abfolge bei LDAP ist verbinden, binden, suchen,
// interpretieren des Sucheergebnisses, Verbindung schließen

echo "<h3>LDAP query Test</h3>";
echo "Verbindung ...";
$ds=ldap_connect("localhost");  // muss ein gültiger LDAP Server
                               // sein!
    echo "Ergebnis der Verbindung: ".$ds."<p>";

if ($ds) {
    echo "Bindung ...";
    $r=ldap_bind($ds);     // das ist ein "anonymer" bind,
                           // typischerweise nur Lese Zugriff
    echo "Ergebnis der Bindung ".$r."<p>";

    echo "Suche nach (sn=S*) ...";
    // Suchen des Nachnamen-Eintrags
    $sr=ldap_search($ds,"o=Meine Firma, c=DE", "sn=S*");
    echo "Ergebnis der Suche ".$sr."<p>";

    echo "Anzahl gefundenen Einträge ".ldap_count_entries($ds,$sr)."<p>";

    echo "Einträge holen ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Daten für ".$info["count"]." Items gefunden:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn ist: ". $info[$i]["dn"] ."<br>";
        echo "erster cn Eintrag: ". $info[$i]["cn"][0] ."<br>";
        echo "erster email Eintrag: ". $info[$i]["mail"][0] ."<p>";
    }

    echo "Verbindung schließen";
    ldap_close($ds);

} else {
    echo "<h4>Verbindung zum LDAP Server nicht möglich</h4>";
}
?>

LDAPS http://php3.de/manual/de/function.ldap-connect.php (Den Kommentar ganz oben durchlesen)

cheers,

edit.:

einfacheres beispiel:

Code:
<PHP
$basedn = "OU=RootDSE, DC=domain, DC=de";
$lh = ldap_connect("www.mustermann.eu");
if ($lh) echo "Verbindung erfolgreich...<br>";
$id = ldap_bind($lh, $basedn,"") | die "Authentifizierung fehlgeschlagen";
PHP>
Bearbeitet von BuSHidO am 06.04.2004, 16:00

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
glaubst du ich bin unfähig, die ldap erweiterung einzubinden? lol.

BuSHidO

ist süß
Registered: Jul 2001
Location: galaxie
Posts: 542
nein, aber sie zu verwenden
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz