Login über mehrere Domains

seppl2000

Casino-Winners.de
ID: 272633
L
13 Februar 2007
2.401
165
Hallo,

ich stehe momentan vor einem großen Problem.

Ich baue derzeit ein neues Projekt auf. Dieses besteht aus 12 Top-Level-Domains. Man loggt sich über Domain 1 ein, und soll dann auf den restlichen 11 auch eingeloggt sein.

Die Speicherung des Loginzustandes soll durch einen Cookie erfolgen, der eine 250 stellige Zeichenkette beinhaltet. In der Datenbank speichere ich diesen String und vergleiche ihn immer mit dem Cookie bei jedem Seitenaufruf.

Nun habe ich das Problem, dass ich nur Cookies auf der aktuellen Domain erstellen kann. Ich bräuchte aber auf den anderen 11 Domains den selben Cookie wie auf der 1. Domain.

Wie kann man so etwas lösen?
Ich weiß, dass es eine Möglichkeit geben muss, da Primusportal mit den Primeras das genauso macht. Die haben auch mehrere Domains aber nur einen zentralen Login.

Ich hoffe, dass ihr mir helfen könnt.

Edit:
Es darf nicht über Iframe, Ajax, oder sonst irgendwelche Technologien passieren, die der User vllt. ausgeschaltet hat.

Am liebsten wäre mir eine einfache PHP-Anweisung oder sowas ähnliches.

mfg
seppl2000
 
Zuletzt bearbeitet:
Würde mir nur einfallen, das du nachm Login für jede Domain über nen iframe das login speicherst.
also nachm login wird für jede Domain per iframe ein "loginscript" aufgerufen...
 
Nun, es wird nur per Iframe gehen oder per JS, eine andere möglichkeit wirst du nicht finden. Denn es hat ja seinen grund wieso nur die Domain einen eigenen Cookie setzen und auch lesen darf.

*edit*
der SUer kann auch cookies deaktivieren ;)
 
Warum denn unbedingt ein Iframe, ein kleines 1x1-Gif müsste doch auch reichen, oder? Alternativ eine kurze Weiterleitung mit sofortiger Zurück-Leitung...
 
wie würde das dann mit diesem 1x1 gif laufen?

das scheint mir bisher die beste lösung zu sein.

mfg
seppl2000
 
Funktioniert halt nur, wenn Cookies von Drittseiten erlaubt sind.
100%ige Sicherheit gibt es nicht. Zur Not muss sich der User auf jeder Seite separat einloggen, wenn er es nicht zulässt.
 
ich würde eher etwas in die Richtung wie OpenID implementieren, wenn man die manuelle Eingabe der OpenID-Eingabe durch eine sofortige Weiterleitung zu der eigenen OpenId-Loginseite ersetzt, sollte das gut funktionieren.

Oder eben OAuth bzw. andere SingleSignOn-Systeme (SSO)
 
Was du versuchst ist eine Art Federated Login. OpenID hat's vorgemacht wie es gehen kann.

Im Grunde was du machen willst ist dass die 11 Domains die sich nicht um den login kuemmern sich an den login server wenden, sich authentifizieren und dann nachfragen ob der user eine gueltige session hat.

Wie das konkret aussieht is nicht so einfach. Stell dir das einfach so vor: ein besucher ohne cookie fuer domain5 kommt an, jetzt willst du checken dass der auf domain1 eingeloggt ist (login server) also schickst kontaktierst du domain1 und vereinbarst eine URL zum zurueckleiten (mit einem schoenen random parameter damit du den User spaeter wiedererkennst). Dann wird der User an domain1 weitergeleitet, der checkt ob der user eingeloggt ist, falls nicht fragt er nach username passwort. Danach schickt er ihn an domain5 weiter (die url die vorher abgemacht wurde) und damit weiss domain5 dass der user derjenige ist der er behauptet zu sein und startet eine eigene session.

Fuer den user sieht das sehr einfach aus. Ist er eingeloggt wird er ohne verzoegerung wieder an domain5 weitergeleitet, er merkt nichts. Ist er nicht eingeloggt dann sieht er die login maske von domain1 und wird dann weitergeleitet :)

For details check openid.

HTH
Cdecker
 
bei mir sind ja alle domains auf dem selben server, nur in unterschiedliche ordner geroutet.

bei mir läufts zurzeit so:
user kommt auf domain 5 an, dort werden nur inhalte für ausgeloggte user angezeigt.
der login-link, der auf domain 1 zeigt, wird angezeigt.
der user klickt dadrauf, gibt seine daten in domain 1 ein, und bekommt für diese domain dann einen cookie mit der login-zeichenkette, die ich in meiner datenbank speichere.

wie müsste ich jetzt mein system ändern, damit der user gleichzeitig auch in domain 5 eingeloggt wird?

habe das noch nicht ganz kapiert.

mfg
seppl2000
 
hm haben die domains verschiedene Inhalte oder kommen sie alle auf die Startseite?
Klappt das da nicht wenn du einfach via Confixx die Domain 2-12 auf DOmain1 weiterleitest?

Edit:
Und ne einfache PHPSESSION?


Edit2:
habe eben mal einen Test gemacht mit ebay.de wenn ich mich da einlogge muss ich mich bei ebay.com auch neu einloggen
 
die domains haben alle unterschiedliche inhalte, gehören aber zu einem ganzheitlichen projekt, wie primusportal.de.

mfg
seppl2000
 
Also Primusportal ruft für jede Domain eine login.php auf, der ein Salt und die Userid übergeben wird. Versuch das doch damit (Weiß nur nicht wie der Aufruf erfolgt, scheinbar aber nicht über img)
 
also, soll ich es dann folgendermaßen lösen:

user loggt sich auf domain 1 ein.
daraufhin werden irgendwie im hintergrund für die anderen 11 domains jeweils ne eigene php-datei aufgerufen, die den cookie setzen.

so funktioniert das im groben oder?

die frage ist jetzt dann nur noch, wie ich es anstelle, dass mit sehr hoher wahrscheinlichkeit dieses system bei vielen usern funktioniert.

also wie kann ich diese php-dateien der anderen 11 domains am besten aufrufen?
hat da jemand ne idee?

mfg
seppl2000
 
die frage ist jetzt dann nur noch, wie ich es anstelle, dass mit sehr hoher wahrscheinlichkeit dieses system bei vielen usern funktioniert.
Wie du es machst, dürfte egal sein. Entweder ein User blockiert Drittseiten-Kekse, dann guckst du in den Mond, oder er lässt es zu.
also wie kann ich diese php-dateien der anderen 11 domains am besten aufrufen?
hat da jemand ne idee?
Ich persönlich würde lieber Bilder anstelle von iFrames oder Scripts benutzen. Da is die Chance nicht so hoch, dass zusätzliche Sicherheitseinstellungen sie blocken und die rücken deinen Auftritt auch in ein nicht so schlechtes Licht, als wie wenn 12 unsichtbare iFrames irgendwo versteckt sind.

Wenn du clever gewesen wärst, hättest du nur eine Top-Level aktiv verwendet und die 12 "Sektionen" über Subdomains erledigt. Ein User hätte einen Keks dann über eine Subdomain für alle anderen setzen können und du hättest keine Angst haben müssen, dass der "sektionsübergreifende" Login nicht funktioniert.
 
also,
ich werde es dann nun so machen:

der user loggt sich auf domain 1 ein, und bekommt dann unsichtbar 11 bilder angezeigt, wo er dann nen cookie für die anderen 11 domains bekommt.

ich dachte mir, dass ich einfach ne tabelle in mysql erstelle, wo ich user-id und zwischen-code speichere.

beim loginvorgang erzeugt domain 1 in der db nen eintrag mit der user-id und dem zwischen-code. die anderen 11 domains vergleichen den zwischencode, den sie per GET übertragen bekommen, mit der db, wenn alles passt, bekommt der user seinen cookie.

ist das so sicher genug?
oder soll ich es noch verändern.

@theHacker:
ich wollte unbedingt 12 domains haben, um das projekt besser strukturieren zu können. außerdem kann ich so auf jeder domain, zb. view-banner oder traffics abbauen. bringt mir somit 12-fache einnahmen. und somit bekommen die user auch mehr.

mfg
seppl2000
 
dadurch hast du aber doch nicht 12 fache Anzahl an Einbledungen :ugly:

Wo kann ich beim FF (3.5) denn einstellen wie er die Cookies behandeln soll. Beim Ie hab ichs gefunden...
 
Wo kann ich beim FF (3.5) denn einstellen wie er die Cookies behandeln soll. Beim Ie hab ichs gefunden...

"Extras" -> "Einstellungen" -> "Datenschutz"

Dort hast du eine Auswahlliste, ob Firefox eine Chronik für dich anlegen soll und wie diese Chronik angelegt werden soll. Wenn du hier auswählst, dass diese nach "benutzerdefinierten Einstellungen" angelegt werden soll, kannst du dort auch, u.a., einstellen, wie mit den Cookies verfahren werden soll.