Übernahme von Login-Sessions

deostift

Erfahrenes Mitglied
Hallo zusammen,

im Moment stehe ich vor folgender Herausforderung: Es wird eine Website entwickelt (wohl mit ASP oder JSP etc.) inklusive Login Funktionalität. Ich für meinen Teil, bin für ein eigentlich vollständig getrenntes Unterportal (läuft vermutlich unter einer Sub-Domain) zuständig (Entwicklung unter LAMP), das allerdings die Logindaten der Website mit übernehmen müsste.

Wie kann ich denn auf eine Login-Session (nehme mal an das funktioniert unter ASP, JSP & Co. gleich) von der Website zugeifen bzw. welche Möglichkeit würdet Ihr wählen, damit sich der Kunde auf meinem Portal nicht nochmals einloggen muss?

Viele Grüße, Deo ...

P.S.: Bei Unklarheiten hole ich gerne weiter aus :)
 
Was hat das im PHP Forum zu suchen? Es geht ja um ASP oder JSP ^^ Ganz andere Script / Programmiersprache! Zumal ASP.NET wohl mehr Sinn macht als ASP ...

In PHP macht man einfach vor dem 1. output session_start(), damit wird die Session automatisch weitergegeben. Normalerweise prüft man dann nur die SessionID, ob sie in der Tabelle bei den eingeloggten Leuten drinne ist und wann zuletzt ne Aktion des Users kam. Hat der seit x Sekunden nichts mehr angeklickt, loggt man ihn aus.


Warum postest du das wenn du dich mit ASP / JSP gar nicht auskennst? Zumal die Beschreibung sehr dürftig ist, außer dass es ein Portal mit Login sein soll...
 
@RadHad: Ich glaube, er entwickelt in PHP da sein System LAMP ist (Linux, Apache, MySQL und PHP). Wenn ich falsch liege sagt mir bescheid.

@deostift: Wäre nett wenn du etwas weiter ausholen würdest. Was weist du von den Sessions die übergeben werden? Weist du wohin die gespeichert werden, werden sie in die DB gespeichert? Benötigst du nur die Session-ID oder Daten welche in der Session gespeichert sind?

;)
mfg
nero_85
 
Hallo Ihr beiden,

Nero hat gewonnen: Ich werde in der Tat unter PHP entwickeln und habe mir bewusst diesen Forumsbereich ausgesucht :)

Okay, nochmals etwas ausführlicher in der Erklärung. Ich habe bereits ein Portal mit eben Linux, Apache, MySQL und PHP entwickelt und werde es noch weiter entwickeln. Dieses Portal hat einen eigenen Loginbereich per Sessions und funktioniert auch ganz toll.

Nun möchten doch tatsächlich noch andere dieses Portal nutzen bzw. es in deren Websites einbinden. Bei einem Kunden existiert bereits ein Login-Bereich - ich weiss bisher nur dass seine Webagentur ein CMS auf Javabasis nutzt, was mich vermuten lässt, dass deren Seiten nicht PHP nutzen. Ich wurde nun gefragt, ob es denn möglich ist, die Anmeldung eines Benutzers auf der Website des Kunden an mein PHP-Portal weiter zu geben. Also er sich zu Beginn auf der Website anmeldet, dann beim Navigieren auf mein Portal stößt und dort eben schon eingeloggt ist. Benötigen würde ich also Daten die in der Session gespeichert sind - zumindest den Benutzernamen.

Angenommen wir hätten JSP oder .Net-Derivate ... ich vermute mal, dass es hier ebenfalls Session-IDs geben wird die serverseitig gespeichert werden - ob in DB oder nicht weiss ich nicht.

Ist es denn nun von meinem (PHP)-Portal aus möglich - sollte dieses die Session ID übermittelt bekommen (per URL?) - auf die zuvor angelegte Server-Session (von JSP etc.) zugreifen zu können? Um z.B. den Benutzernamen auszulesen bzw. welche Lebensdauer diese Session hat und so weiter?

Ich bewegte mich bisher immer nur in meiner eigenen Suppe, darf aber hier was neues dazulernen :) Wenn Ihr mir Hinweise geben könntet, wäre ich Euch dankbar.

Grüßle, Deo
 
Rein theoretisch ist es schon möglich. Bei der Version, wo die Session-Daten in einer DB gespeichert werden, musst du bloß die Tabelle, in welcher die Daten gespeichert sind.
Bei der Version wo die Session am Server in Dateien gespeichert werden, musst du den Pfad wissen wo diese Session-Dateien abgespeichert werden.

Dann musst du nur auf irgendeinem Weg die Session-ID von der vorherigen Seite erhalten (über die URL) und du kannst auf die Sessions zugreifen.

Wenn die Sessions in Dateien gespeichert werden, gibt es 2 Möglichkeiten wie du den Pfad nutzen kannst (zumindest 2 Möglichkeiten welche mir bekannt sind).

1. php.ini ändern
In diesem Fall speicherst du deine Sessions im selben Ordner ab, in dem die Sessions des anderen Portals abgelegt werden;

2. vorübergehend den Pfad über die headers ändern. --> Wie das allerdings funktioniert weiß ich nicht mehr. Auf jeden Fall würdest du deine ini-Datei nicht auf Dauer ändern müssen.
 
Danke für Deine umfangreiche Antwort, Nero ...

Nun noch die 1 Million Euro Frage :) >> Was ist wenn ich auf einem anderen Server bin. Sprich Website Kunde auf Server A (auch die Session liegt dort) sowie ich mit meinem Popel-Portal auf Server B :)

DANN wird das vermutlich nicht mehr so einfach und ich müsste irgendwie im Hintergrund noch eine Abfrage an deren Server starten ob die mir gerade übergebene SessionID auf deren Server noch gültig ist. So meine Vermutung ... nur wie das gestaltet werden könnte (nen zweiten HTTP Request im Hintergrund starten?) und ob dies sicher ist ... hmm :suspekt:
 
Das ist schwierig!

Wahrscheinlich benutzt du auch eine ganz andere Datenbank in der die User gespeichert sind als das Portal auf Server A!

Wenn das der Fall ist würde mir nur noch ein Mittel einfallen:
Auf Server A müsste der Benutzername inklusive einem verschlüsseltem Passwort (nicht das des Users sondern ein vorher abgesprochenes) per Query-String übergeben. Danach kannst du eine Anfrage starten, in der du deine DB durchsuchst ob der User bei dir vorhanden ist. Danach das PW im Script entschlüsseln und Vergleichen, danach überprüfen woher das PW kommt (sowohl ob es vom Query-String kommt, als auch von welchem Server bzw. welcher Webadresse). Und wenn in diesem Fall alles in Ordnung ist kannst du den Benutzerstatus auf eingeloggt stellen und ihm eine eigene Session zuteilen.
Problem: Umständlich! Und wie sicher das ganze ist weiß ich nicht. :rolleyes:

Wenn ihr beide die gleiche DB benutzt, dann musst du dir einfach die UserID und den User-Name übergeben lassen.
Wobei das auch nicht wirklich sicher ist denke ich....hmmm....schwierig!!

mfg
nero
 
Zurück