diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/login_sicher.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/login_sicher.php | 365 |
1 files changed, 0 insertions, 365 deletions
diff --git a/ldap-site-mngmt/webinterface/login_sicher.php b/ldap-site-mngmt/webinterface/login_sicher.php deleted file mode 100644 index 307b7b92..00000000 --- a/ldap-site-mngmt/webinterface/login_sicher.php +++ /dev/null @@ -1,365 +0,0 @@ -<?php -/** -* login_sicher.php f�hrt einen Bind mit den eingegebenen Benutzerdaten durch. -* Dabei erfolgt die Authetifizierung entsprechend der Ausf�hrung bei der Pr�sentation des Projektes -* am RZ-LDAP. Das Passwort des Users wird aber nun nicht mehr auf dem Gruppe1 LDAP gespeichert. Dort -* legt das Skript ein Standardpasswort an. -* Im Fehlerfall wird eine Meldung ausgegeben und anschlie�end auf index.php weitergeleitet. -* Bei erfolgreichem nicht anonymem Bind werden die Benutzerrechte ausgelesen und davon abh�ngig -* die entsprechende Startseite aufgerufen. dn, uid, userPassword, cn und die Rechte werden in -* einer Session gespeichert. -* -* DIESE VERSION IST AKTUELL IM EINSATZ!!!! -* -* @version V3.2 -* @author Timothy Burk -*/ -session_cache_expire(30); -session_start(); - -# LDAP-Bibliothek einbinden -include("lib/ldap.inc.php"); -# Standard-Bibliothek einbinden -include("lib/commonlib.inc.php"); - -$uid = $_POST['uid']; -$userPassword = $_POST['userPassword']; -# $userDn_rz = "uid=".$uid.",ou=people,".$suffix_rz; -$userDN = "uid=".$uid.",ou=people,".$suffix; - -#echo "uid: "; print_r($uid); echo "<br>"; -#echo "pw: "; print_r($userPassword); echo "<br>"; - -checkLogin($uid,$userPassword); - -/** -* checkLogin($uid, $userPassword) - Authentifizierung am RZ-LDAP und Gruppe1-LDAP -* -* Wenn RZ-LDAP-Login UND Gruppe1-LDAP-Login erfolgreich sind, dann ist der User -* bereits im Gruppe1-LDAP eingetragen. -* -> Mache Datenabgleich und anschlie�enden Login am Gruppe1-LDAP -* Wenn RZ-LDAP-Login erfolgreich, Gruppe1-LDAP-Login jedoch nicht erfolgreich ist, -* dann unterscheide zwischen zwei M�glichkeiten: -* 1. Der User ist im Gruppe1-LDAP nicht angelegt, -* 2. Der User ist im Gruppe1-LDAP zwar angelegt, aber das Passwort wurde auf dem RZ-LDAP inzwischen ge�ndert. -* -> Login als Dummy und Check, ob UID vorhanden -* Wenn RZ-LDAP-Login nicht erfolgreich, Gruppe1-LDAP-Login jedoch erfolgreich ist, -* dann ist der User auf dem RZ-LDAP nicht gespeichert. -* -> Login am Gruppe1-LDAP -* In anderen F�llen waren die Zugangsdaten nicht korrekt. -* -> Redirect auf index.php. -* -* Schema siehe auch /home/gruppe1/Praesentation/Login und Personen.pps -* -* @param string UID -* @param string Password -* -* @see userLogin() -* @see datenabgleich() -* @see dummyUidCheck() -* @see userAnlegen() -* -* @author Timothy Burk -*/ -function checkLogin($uid = "", $userPassword = "") { - global $userDn_rz, $userDN, $suffix, $suffix_rz, $ldapError, $standardPassword; - # Abfrage, ob das Loginformular Daten enth�lt - if(!(($uid == "") || ($userPassword == ""))) { - # UID und Passwort wurden eingegeben - # Fallunterscheidung welche Logins m�glich sind - /* if(($ds_rz = rzLdapConnect($uid,$userPassword)) && ($ds = uniLdapConnect($uid, $standardPassword))) { - # Wenn RZ-LDAP-Login UND Gruppe1-LDAP-Login erfolgreich sind, dann ist der User - # bereits im Gruppe1-LDAP eingetragen. - # -> Mache Datenabgleich und anschlie�enden Login am Gruppe1-LDAP - datenabgleich($uid, $userPassword, $ds_rz, $ds); - ldap_unbind($ds); - ldap_unbind($ds_rz); - $userPassword = $standardPassword; - userLogin($uid, $userPassword); - } else if(($ds_rz = rzLdapConnect($uid,$userPassword)) && !($ds = uniLdapConnect($uid, $standardPassword))) { - # Wenn RZ-LDAP-Login erfolgreich, Gruppe1-LDAP-Login jedoch nicht erfolgreich ist, - # dann unterscheide zwischen zwei M�glichkeiten: - # 1. Der User ist im Gruppe1-LDAP nicht angelegt, - # 2. Der User ist im Gruppe1-LDAP zwar angelegt, aber das Passwort wurde auf dem RZ-LDAP - # inzwischen ge�ndert. - # -> Login als Dummy und Check, ob UID vorhanden - if(dummyUidCheck($uid)) { - #changePassword($uid,$userPassword); - $userPassword = $standardPassword; - } else { - userAnlegen($uid,$userPassword,$ds_rz); - } - ldap_unbind($ds_rz); - $userPassword = $standardPassword; - checkLogin($uid, $userPassword); - } else if(!($ds_rz = rzLdapConnect($uid,$userPassword)) && */ if ($ds = uniLdapConnect($uid,$userPassword)) { - # Wenn RZ-LDAP-Login nicht erfolgreich, Gruppe1-LDAP-Login jedoch erfolgreich ist, - # dann ist der User auf dem RZ-LDAP nicht gespeichert. - # -> Login am Gruppe1-LDAP - ldap_unbind($ds); - userLogin($uid, $userPassword); - } else { - # In anderen F�llen waren die Zugangsdaten nicht korrekt. - # -> Redirect auf index.php. - redirect(3, "index.php", "<h3>Bitte geben Sie korrekte Zugangsdaten ein.<h3>".$ldapError, FALSE); - die; - } - - } else { - # UID und/oder Passwort wurden NICHT eingegeben - redirect(3, "index.php", "<h3>Bitte geben Sie User-Id und Passwort ein.</h3>".$ldapError, FALSE); - die; - } -} - -/** -* dummyUidCheck($uid) - �berpr�ft, ob UID im Gruppe1-LPAD vorhanden ist. -* -* �ber den Dummyuser wird eine Verbindung zum Gruppe1-LDAP aufgebaut und die angegebene -* UID wird gesucht. -* -* @param string UID -* -* @return boolean TRUE = UID vorhanden, FALSE = UID nicht gefunden -* -* @author Timothy Burk -*/ -function dummyUidCheck($uid) { - global $userDn, $suffix, $suffix_rz, $ldapError, $dummyUid, $dummyPassword; - # Bei Erfolg stellen wir eine Verbindung mit unserem LDAP her. Dazu nutzen wir den Dummy: - if(!($ds_dummy = uniLdapConnect($dummyUid, $dummyPassword))) { - redirect(5, "index.php", "Dummy-Login fehlgeschlagen!<br>".$ldapError, FALSE); - die; - } - # Im n�chsten Schritt wird �berpr�ft, ob ein Eintrag mit der UID $uid schon vorliegt: - if(!($person_daten = uniLdapSearch($ds_dummy, "ou=people,".$suffix, "uid=$uid", array("*"), "", "list", 0, 0))) { - redirect(5, "index.php", $ldapError, FALSE); - die; - } - if($person_daten['count'] == 0) { - # Eintrag ist nicht vorhanden. -> Anlegen - ldap_unbind($ds_dummy); - return FALSE; - } else { - ldap_unbind($ds_dummy); - return TRUE; - } -} - -/** -* userAnlegen($uid,$userPassword,$ds_rz) -* -* Legt mithilfe des Dummyusers einen noch nicht bei uns gef�hrten User im Gruppe1-LDAP -* mit den Daten des Rechenzentrums an. Das Passwort ist dabei f�r alle User in der config.inc.php festgelegt. -* -* @param string UID -* @param string Password -* @param resource RZ-LDAP Directory Handle -* -* @author Timothy Burk -*/ -function userAnlegen($uid,$userPassword,$ds_rz) { - global $userDn_rz, $userDn, $suffix, $suffix_rz, $ldapError, $dummyUid, $dummyPassword, $standardPassword; - # Bei Erfolg stellen wir eine Verbindung mit unserem LDAP her. Dazu nutzen wir den Dummy: - if(!($ds_dummy = uniLdapConnect($dummyUid, $dummyPassword))) { - redirect(5, "index.php", "Dummy-Login fehlgeschlagen!<br>".$ldapError, FALSE); - die; - } - # Im n�chsten Schritt wird �berpr�ft, ob ein Eintrag mit der UID $uid schon vorliegt: - $ruffelder = array("uid", "sn", "givenname", "uidnumber", "gidnumber", "homedirectory", "loginshell", "rufnutzernummer", "rufanrede", "rufeinrichtung", "rufmatnr", "rufaccounttype", "ruffakultaet", "mail", "rufdienst"); - - if(!($person_daten = uniLdapSearch($ds_rz, "ou=people,".$suffix_rz, "uid=$uid", $ruffelder, "", "list", 0, 0))) { - redirect(5, "index.php", $ldapError, FALSE); - die; - } - $person_daten = ldapArraySauber($person_daten); - $person_daten = $person_daten[0]; - foreach($ruffelder as $ruffeld) { - $ruffeld = str_replace("ruf","",$ruffeld); - if($ruffeld == "accounttype") { - $gruppe1felder[] = "employeetype"; - } else if($ruffeld == "anrede") { - $gruppe1felder[] = "title"; - } else { - $gruppe1felder[] = $ruffeld; - } - } - $i = 0; - $neuerEintrag = array(); - foreach($gruppe1felder as $gruppe1feld) { - if (isset($person_daten[$ruffelder[$i]])) { - $neuerEintrag[$gruppe1feld] = $person_daten[$ruffelder[$i]]; - } else { - $neuerEintrag[$gruppe1feld] = ''; - } - $i++; - } - if($neuerEintrag['employeetype'] != "student") { - unset($neuerEintrag['employeetype']); - } else { - $neuerEintrag['employeetype'] = ucfirst($neuerEintrag['employeetype']); - } - $neuerEintrag['userPassword'] = $userPassword; - # Ermitteln der Initialen: Erster Buchstabe des Vornamens und erster Buchstabe des Nachnamens - $neuerEintrag['initials'] = substr($neuerEintrag['givenname'],0,1).".".substr($neuerEintrag['sn'],0,1)."."; - - # CN erstellen - $neuerEintrag['cn'] = $neuerEintrag['givenname']." ".$neuerEintrag['sn']; - - # Aktiv setzen - $neuerEintrag['aktiv'] = "yes"; - $neuerEintrag = inputArraySauber($neuerEintrag); - - # Festes Sicherungspasswort setzen - $neuerEintrag['userPassword'] = $standardPassword; - if(!($add = uniLdapAdd($ds_dummy, $userDn, $neuerEintrag, "personen"))) { - redirect(5, "index.php", "<b>Eintrag nicht erfolgreich</b><br>".$ldapError, FALSE); - die; - } -} - -/** -* datenabgleich($uid, $userPassword, $ds_rz, $ds) - �berschreibt bei jedem Login die Daten des -* Gruppe1-LDAP mit denen des RZ-LDAP mithilfe des Dummyusers. -* -* @param string UID -* @param string Password -* @param resource ds_rz RZ-LDAP Directory Handle -* @param resource ds Gruppe1-LDAP Directory Handle nach Bind mit Dummyuser -* -* @author Timothy Burk -*/ -function datenabgleich($uid, $userPassword, $ds_rz, $ds) { - global $userDn_rz, $userDn, $suffix, $suffix_rz, $ldapError, $dummyUid, $dummyPassword, $standardPassword; - # Bei Erfolg stellen wir eine Verbindung mit unserem LDAP her. Dazu nutzen wir den Dummy: - if(!($ds_dummy = uniLdapConnect($dummyUid, $dummyPassword))) { - redirect(5, "index.php", "Dummy-Login fehlgeschlagen!<br>".$ldapError, FALSE); - die; - } - # Im n�chsten Schritt wird �berpr�ft, ob ein Eintrag mit der UID $uid schon vorliegt: - $ruffelder = array("uid", "sn", "givenname", "uidnumber", "gidnumber", "homedirectory", "loginshell", "rufnutzernummer", "rufanrede", "rufeinrichtung", "rufmatnr", "rufaccounttype", "ruffakultaet", "mail", "rufdienst"); - - if(!($person_daten = uniLdapSearch($ds_rz, "ou=people,".$suffix_rz, "uid=$uid", $ruffelder, "", "list", 0, 0))) { - redirect(5, "index.php", $ldapError, FALSE); - die; - } - $person_daten = ldapArraySauber($person_daten); - $person_daten = $person_daten[0]; - foreach($ruffelder as $ruffeld) { - $ruffeld = str_replace("ruf","",$ruffeld); - if($ruffeld == "accounttype") { - $gruppe1felder[] = "employeetype"; - } else if($ruffeld == "anrede") { - $gruppe1felder[] = "title"; - } else { - $gruppe1felder[] = $ruffeld; - } - } - $i = 0; - $neuerEintrag = array(); - foreach($gruppe1felder as $gruppe1feld) { - if (isset($person_daten[$ruffelder[$i]])) { - $eintrag = $person_daten[$ruffelder[$i]]; - } else { - $eintrag = ''; - } - $neuerEintrag[$gruppe1feld] = $eintrag; //$person_daten[$ruffelder[$i]]; - $i++; - } - - if($neuerEintrag['employeetype'] != "student") { - unset($neuerEintrag['employeetype']); - } else { - $neuerEintrag['employeetype'] = ucfirst($neuerEintrag['employeetype']); - } - $neuerEintrag['userPassword'] = $userPassword; - # Ermitteln der Initialen: Erster Buchstabe des Vornamens und erster Buchstabe des Nachnamens - $neuerEintrag['initials'] = substr($neuerEintrag['givenname'],0,1).".".substr($neuerEintrag['sn'],0,1)."."; - - # CN erstellen - $neuerEintrag['cn'] = $neuerEintrag['givenname']." ".$neuerEintrag['sn']; - - # Aktiv setzen - $neuerEintrag['aktiv'] = "yes"; - $neuerEintrag = inputArraySauber($neuerEintrag); - - # Festes Sicherungspasswort setzen - $neuerEintrag['userPassword'] = $standardPassword; - - if(!($alteDaten = uniLdapSearch($ds_dummy, "ou=people,".$suffix, "uid=$uid", array("*"), "", "list", 0, 0))) { - redirect(5, "index.php", $ldapError, FALSE); - die; - } - - if(uniLdapModify($ds_dummy, $userDn, $alteDaten, $neuerEintrag, 0)) { - $meldung = "Daten abgeglichen"; - } - -} - -/** -* userLogin($uid, $userPassword) - F�hrt den Login am Gruppe1-LDAP durch. -* -* Nach erfolgreicher Identifikation und ggf. neuem Anlegen oder Datenabgleich wird -* mit userLogin() der Bind am Gruppe1-LDAP durchgef�hrt. -* Die Rechte und der CN des Users werden ausgelesen und in der Session gespeichert. -* Anschlie�end leitet das Skript auf die Startseite der Verwaltung (person_daten_show.php) weiter. -* -* @param string UID -* @param string Password -* -* @author Timothy Burk -*/ -function userLogin($uid, $userPassword) { - global $userDN, $suffix, $ldapError; - # Verbindung mit der Datenbank herstellen - if(($uid == "") || ($userPassword == "") || !($ds = uniLdapConnect($uid,$userPassword))) { - redirect(3, "index.php", "Falscher Login<br>".$ldapError, FALSE); - die; - } - - # cn abfragen - $cn = "Gast"; - if(!($person_daten = uniLdapSearch($ds, "ou=people,".$suffix, "uid=$uid", array("cn"), "", "list", 0, 0))) { - redirect(3, "index.php", $ldapError, FALSE); - die; - } else { - $cn = str_replace('\"', '', $person_daten[0]['cn'][0]); - } - - # Speichern der Sessionvariablen - $_SESSION['uid'] = $uid; - $_SESSION['userPassword'] = $userPassword; - $_SESSION['dn'] = $userDN; - $_SESSION['cn'] = $cn; - $_SESSION['audn'] = ""; - $_SESSION['status'] = "in"; - $_SESSION['error']; - - # LDAP-Bind aufheben - ldap_unbind($ds); - - $mesg = "<html> - <head> - <title>AdminUnit Management</title> - <link rel='stylesheet' href='styles.css' type='text/css'> - </head> - <body> - <table border='0' cellpadding='200' cellspacing='0' width='100%'> - <tr valign='middle'><td align='center'> - <h3>Bitte einen Moment Geduld, die Seite wird geladen ... <br> - Falls nicht, klicken Sie bitte <a href='start.php'>hier</a>.<h3> - </td></tr> - </table> - </body> - </html>"; - # Aufruf der Startseite: - - redirect(0, "start.php", $mesg, TRUE); - - # nichtmehr ben�tigte CSV-Dateien im tmp-Verzeichnis l�schen - # listen_sauber(); -} - - -?> |