Zum Inhalt springen

Login mit externer Datenbank

Erstellt am 8. Februar 2010 · 2 Antworten · letzte Antwort am 9. Februar 2010

Tags: Frontend-Benutzer, Datenbank, Frage

caomhan ·

Hallo liebe TYPO3 Freunde,

ich habe eine Frage.

Und zwar benötige ich eine Möglichkeit mit einem TYPO3 Login eine bereits mit Daten befüllte Datenbank nach Benutzer zu checken. Ich möchte quasi mit dem TYPO3 Login nach User und Passwort aus einer anderen Datenbank (gleicher Server) prüfen.

Eine Registrierung (Benutzer schreiben in diese Datenbank) habe ich schon per page_php_content erstellt und funktioniert.

Die Sache mit dem Login würde wahrscheinlich auch irgendwie mit page_php_content zu lösen sein, aber ich möchte ja schon die Funktionen "Anzeigen, wenn angemeldet" im Backend nutzen.

Muss ich da direkt eine Extension "Auth Service" schreiben?! Das ist quasi das einzige was google mir dazu ausgespuckt hat. Wenn ja, hat da vll. mal jemand eine Anleitung von Anfang an (vll. etwas genauer beschrieben und nicht für Gurus 😉?).

Hoffe aber, da gibt es noch Alternativen.

Angemeldet wird sich mit E-mail Adresse und Passwort (in der DB als sha1()😉

Hat da möglicherweise jemand eine Idee, wie ich das Problemchen zu lösen bekomme?

Viele Grüße,
caom

maik ·

Am einfachste ist es natürlich wenn du die Daten in die feuser Tabelle bekommst.
Ich bin mir jetzt nicht sicher ob das auch über Datenbanken-Grenzen hinaus funktioniert.

Dann könntest du die Logins aus der externen Datenbank in die TYPO3 DB triggern und zurück. Würde mich interessieren, ob das geht. Die Trigger gibt es ab MySQL 5.0. Hammer Feature!!!

Ansonsten such mal im Reporitory nach "signon".
Gibt da einige SigleSignOn Extensions.
Vielleicht passt davon eine auf deine Anforderungen.

caomhan ·

Also noch mal zu den Triggern.

Habe damit noch nie gearbeitet. Ein Trigger spielt also von der Datenbank X (email und passwort (sha1)) die Daten in die TYPO3 Datenbank Tabelle fe_user.

Das klingt soweit ganz gut und könnte funktionieren.

Habe jetzt mal in meinem TYPO3 Projekt Benutzergruppen eingerichtet (Benutzer & Admin) wie es sie auch in der Datenbank X gibt. Dem User bei Datenbank X wurde ein "rights" Flag gegeben in der die ID der Benutzergruppe steht, wie bei TYPO3 auch (usergroup). Sollte also auch irgendwie funktionieren.

Was mir sorgen macht ist das Passwort. Habe in TYPO3 einen Test-benutzer angelegt, mir die fe_users angeschaut und schrecklicherweise festgestellt, dass das PW Roh in die DB eingetragen wird. In Datenbank X sind die Passwörter per sha1(); verschlüsselt.

Wie kann ich denn nun der Anmeldemaske sagen, dass das PW nicht Roh sondern per sha1() abgefragt / verglichen werden soll?

-- 1 --
Kann ich die Daten nicht per PHP Script aus Datenbank X auslesen und entsprechend angepasst in die fe_users schreiben? Dann wären ja alle user mit Ihren Daten in der fe_users Tabelle. Würde mir soweit reichen. Dann muss der TYPO3 Login halt das PW nur als sha1 abfragen.

Alle anderen Daten aus der DB X lasse ich jetzt mal bei Seite. Das sind Tabellen mit Aufträgen von mir, die bestimmte Benutzer einsehen können.

Als erstes sollte aber der Login stehen, so dass die Daten so aufbereitet sind, wie Sie auch für die restlichen Daten verwendet werden können. Quasi eine userID von 1000, 1001. Lässt sich beim INSERT der Daten aber auch machen (uid, auto_increment auf start 1000 setzen).

Was sagt ihr zu --1--? Kann ich das so einfach machen?
Wenn ja, wie kann ich dem Login sagen er soll mit sha1() vergleichen und nicht roh?

Danke und grüße,
caom

Edit:

Also ich habe jetzt alle meine User von DB X in die TYPO3 DB Tabelle: fe_users gebracht. Das Passwort ist natürlich nun sha1-Verschlüsselt (in fe_users), kann mich damit also nicht einloggen?!

Eine kleine Extension um Anrede und Mobilnummer einzutragen habe ich jetzt ebenfalls erstellt und funktioniert.

Edit 2:

Mit der EXT "newloginbox" und etwas JS habe ich es nun geschafft sich als Benutzer anzumelden. Passwörter sind in der fe_users als sha1 gesichert (neue PWs werden mit der EXT "its_sha1_password" (oder so ähnlich) direkt als sha1 gesichert. Also Super!

Beim JS wird per Click auf den Submit Button zum anmelden das PW in sha1 gewandelt. Easy!