Php ldap anmeldung

Hallo,

Ich möchte eine php ldap Anmeldung in meine selbst programmierte PC Verwaltung einrichten, finde aber kein script im Internet das funktioniert. Habt ihr Erfahrung damit oder könnt ihr mir vllt. ein Beispiel script schicken?

Wir benutzen Linuxmuster 7 und einen LDAP der auf Port 636 läuft.

Grüße
Finn

Hallo Finn,

Edit: ich verwende LMN 6.2, da sind die LDAP-Felder anders.

ich habe eine solche ldap Anmeldung in php gebastelt. Im Prinzip sieht es bei mir so aus:
Die Anmeldung hinterlässt ein Cookie beim Benutzer, das ihn für eine gewissen Zeit legitimiert. Das Cookie enthält den Namen, die Gruppenzugehörigkeit und das Feld „legitimiert“. Wird dieses Cookie gefunden, landet man direkt auf der entsprechenden Seite (bei mir der Vertretungsplan). Existiert das Cookie nicht, bzw. schlug die Legitimation fehl, wird man auf die Anmeldeseite geleitet.
Die Anmeldeseite enthält ein Formular mit zwei Feldern (username, password), das mit dieser php-Datei ausgelesen wird:

<?php
session_start();
$domain = "hier.kommt.der.servername.hin";
$username = $_POST['username'];
$password = $_POST['password'];
$ldap_address = "ldaps://hier.kommt.der.servername.hin";
$ldap_port = 636;
if ($connect = ldap_connect($ldap_address, $ldap_port)) {
   ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
   ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
   // Authentifizierung des Benutzers
   if ($bind = ldap_bind($connect, "uid=" . $username . ",ou=accounts,dc=...... wie bei den anderen LDAP Anmeldungen auch", $password))  {
    $dn = "ou=accounts,dc=dc=...... wie bei den anderen LDAP Anmeldungen auch";
    $fields = "(uid=$username)";
    $search = ldap_search($connect, $dn, $fields);
    $res = ldap_get_entries($connect, $search);
    $ldap_username = $res[0][uid][0];
    $ldap_first_name = $res[0][givenname][0];
    $ldap_last_name = $res[0][sn][0];
    $ldap_displayname = $res[0][displayname][0];
    $ldap_groupnumber = $res[0]['gidnumber'][0];
    $gruppen = array(
              "10000" => "Lehrer",
              "10006" => usw. für die paar Klassen, die es bei uns gibt.
              );
   $_SESSION["legitimiert"]=1;
   $_SESSION["user"]=$ldap_displayname;
   $_SESSION["group"]=$gruppen[$ldap_groupnumber];
   $_SESSION["visited"]=true;
   setcookie("user",$_SESSION["user"],time()+(3600*24*30));
   setcookie("group",$_SESSION["group"],time()+(3600*24*30));
   setcookie("legitimiert",1,time()+(3600*24*30));
   ldap_close($connect);
   header('location: index.php');
   exit();
 } 
 else {
    $_SESSION["legitimiert"]=0;
    setcookie("legitimiert",0);
    setcookie("user","");
    ldap_close($connect);
    header('location: index.php');
    exit();

Das ganze Gruppenzeugs brauchst du wahrscheinlich nicht und die Cookie Geschichte vermutlich auch nicht. Dann kannst du den if-Teil in { } bei erfolgreicher Anmeldung durch deine Bedürfnisse ersetzen und für falsche Logins den else-Teil anpassen.

VG Christian

Hallo Christian,

Das hat mir sehr geholfen, vielen Dank!

Lg,
FInn