Login-Übergabe aus externer Datenbank per eigenem Skript

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Login-Übergabe aus externer Datenbank per eigenem Skript

Beitrag von CC_FH-Bielefeld »

Hi, ich habe folgendes vor:

Ich habe das Login unseres Forums etwas abgewandelt. Die Verifizierung soll nicht mehr über die phpbb-sql laufen, sondern über eine externe Datenbank (details bei Interesse, gerne!) erfolgen. Das sieht dann so aus:
Der Student gibt seine Matrikelnummer ( $matr ) und das dazugehörige Passwort ( $ldappw ) auf der Forenseite ein. Ein php-Skript checkt die eingegebenen Daten bei der LDAP-Datenbank ab, und wenn beides passt, liefert das php den Wert "1" zurück. Ansonsten ist der Wert "" (NULL).

Code: Alles auswählen

Vorgeschichte:
Die Matrikelnummer wird beim registrieren als zusätzliches Feld in die phpbb-sql-tabelle (users) geschrieben (unique)
Wie kann ich dem Forum jetzt sagen, dass es

a) in der sql-tabelle "users.matr" nach dem Wert $matr suchen soll, und

b) den gefundenen User als eingeloggt betrachten soll? (oder anders, kann ich das login.php so verändern, dass eine übergebene user-id ("u") automatisch eingeloggt wird?)


Das Problem a) ist sicher recht simpel, aber bei b) kneiff ich mich im moment noch richtig!
Ich bitte bloss um "Hilfe zur Selbsthilfe", wie das ein Zeitgenosse schön auf den Punkt brachte, aber einen kleinen Ansatz/Denkanstoß brauch ich :-)

Ich danke euch für eure Tips, mfg Tim Henze

PS: Richtig, die Passwortfunktion des Forums wird gar nicht genutzt! Das geschiet ja alles über den LDAP!
Campus Commander - FH Bielefeld
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Also nur damit ich das richtig verstanden habe: der Student registriert sich einmal auf dem LDAP-Server (bzw. ist es schon) und registriert sich dann zusätzlich für das Forum?
Wenn dem so ist: wird zusätzlich ein Benutzername für das Forum vergeben?

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag von CC_FH-Bielefeld »

hi phillipp, kurz gesagt: ganz genau!

Also, jeder Student, Mitarbeiter, Prof und Putzfrau wird in diese LDAP-Datenbank eingetragen, und auch automatisch, nach Mitgliedsende (Exmatrikulation, Beschäftigungsende, Pension) wieder gelöscht!
Jeder bekommt eine eindeutige id (seine Matrikelnummer) zugewiesen, und dies ist dann die login-id für alle möglichen hochschulweiten Dienste (Drucken, Webmail, DFÜ usw.) Deshalb soll beim einloggen auch nicht der Foren-Benutzername verwendet werden, sondern $matr.

Wir können bei dem LDAP keine weiteren Daten speichern (Alter, Email, Beruf) usw. so dass das Forum seinerseits die normalen Daten aus der Standard-SQL-Datenbank holen soll. Daran soll sich nichts ändern.

Beim erstmaligen Registrieren des Benutzers im Forum (dies ist für jeden einzeln notwendig!) kann dieser einen freien Benuternamen wählen, wie bei einer ganz gewöhnlichen Registrierung. Ausserdem hat der Benutzer die $matr und das $ldappw angeben. Damit wird auf der einen Seite sichergestellt, dass sich nur berechtigte Personen im Forum registrieren und zweitens wird die $matr als uniques Feld dem Benutzerdatenbankeintrag hinzugefügt!


Das ganze hat folgenden Hintergrund:
1.) Wir dürfen aus Datenschutzgründen nicht die gesamten LDAP-Daten exportieren und damit automatisch Forenbenutzer anlegen, das muss jeder selbstständig tun!
2.) Wir möchten die Benutzung von Matrikelnummer und Passwort fördern, ein weiterer Login/PW wäre manchen Personen der Zielgruppe nicht zuzumuten.
3.) Dennoch soll jeder möglichst anonyme Nicknames nehmen können, und nicht mit seiner Matrikelnummer posten müssen.
4.) Ersparen wir uns so Wartungsaufwand. Es wird keine Karteileichen geben, wenn wir jede Woche einen Abgleich zwischen LDAP und SQL starten, und alle ForenBenutzer löschen, die nicht mehr im LDAP stehen.
Wir haben ca. 10000 User, dass wäre ansonsten viel zu viel Arbeit!


Ich hoffe, dass das ganze jetzt etwas klarer ist?
Sollte es unverständlich sein oder Fragen geben, her damit! Ich erklärs gerne!

gruß Tim


PS: Das ganze ist kein geheimes Projekt, aber der Server ist momentan nur aus dem Hochschulnetz zu erreichen, somit würde euch eine URL auch nichts bringen!
Campus Commander - FH Bielefeld
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Nun, der Ansatzpunkt dafür ist relativ einfach - der komplette Login-Vorgang findet in der login.php statt.

Als erstes müssen wir die Anmelderoutine abändern: Suche

Code: Alles auswählen

		$sql = "SELECT user_id, username, user_password, user_active, user_level
			FROM " . USERS_TABLE . "
			WHERE username = '" . str_replace("\\'", "''", $username) . "'";
und ändere dort die letzte Zeile so ab, dass er dir den Datensatz zu der übergebenen Matrikelnummer ausgibt.

Ein paar Zeilen später findest du

Code: Alles auswählen

		if( $row = $db->sql_fetchrow($result) )
		{
Danach musst du die SQL-Abfrage auf den LDAP machen und ein paar weitere Zeilen später dann

Code: Alles auswählen

				if( md5($password) == $row['user_password'] && $row['user_active'] )
so anpassen, dass statt der Passwortabfrage die erfolgreiche Prüfung des LDAP-Ergebnisses geprüft wird.

Allerdings brauch ich ein paar mehr Informationen, wie die LDAP-Datenbank genau zugänglich ist, wenn du da genaueres wissen willst.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag von CC_FH-Bielefeld »

ich muss gleich erstmal wech, nur schnell vorher noch das script:

Code: Alles auswählen

<?php
  $ds=ldap_connect("ldap.fh-bielefeld.de", 389 );
  if ( isset( $ds ) ) {
    $anzahl = 1;
    $basis_dn = ",ou=people,o=user,o=fh-bi";

    // hier werden die Matrikelnummer und das LDAP-Passwort übergeben
    if ( empty($nn) ) $nn = $matr;    // Anmeldename
    if ( empty($mypw) ) $mypw = $ldappw;    // passwort

    // hier wird der korrekte ldap-bind zusammengestellt
    $uid_all = "uid=" . $nn . $basis_dn;

    // nen simpler nicht-anonymer ldap-bind 
    if ($result = ldap_bind( $ds, $uid_all, $mypw )) {

      // erfolgreiche authentifizierung; hier müsste die weitergabe an das login-script laufen!
    } else {

      //hier würde jetzt die Meldung für fehlerhaftes PW oder Login kommen
    }
  }
  
  //bloss noch sauber vom ldap trennen 
  ldap_close( $ds );

?>
vielen dank schonmal soweit, ich hab´s mit dem sqlö leider noch nicht so, wills aber durch übung lernen!

ps: das die login.php dafür verantwortlich ist, dachte ich mir schon, nur weiß ich eben nicht was genau man wie "setzen" muss!
ich meld mich später nochmal und nehm zu deinem letzten posting stellung, danke und gruß Tim
Campus Commander - FH Bielefeld
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag von CC_FH-Bielefeld »

so, ich hab mich denn mal die woche über an die login.php gemacht, und wenn jetzt noch dieses dämliche "resource #3" prob verschwindet sind wir mit dem login fertig...

dann gibts nur nochmal richtig stress mit der registrierung!
aber dann werd ich mich nochmal melden.

vielen dank soweit!
Campus Commander - FH Bielefeld
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“