2009-06-23 16 views
3

Problem: Ein Download-Link sollte auf der Startseite eines Benutzers angezeigt werden. Dieser Download-Link sollte nur zugänglich sein, wenn der Benutzer angemeldet ist.Wie kann ich eine Benutzersitzung über mehrere Server hinweg authentifizieren?

Aber das eigentliche Problem ist, dass die Homepage des Benutzers und der Download-Link auf separaten Webservern sind.

Gibt es eine Möglichkeit, ein Token mit dem Downloadlink zu senden und dort zu validieren?

+0

Zeigen Sie Ihre Versuche, kopieren Sie den relevanten Code hier. –

+0

Mögliches Duplikat: http: // stackoverflow.com/questions/580671/configure-session-zu-arbeiten-on-applications-das-sind-verteilt-über-multiple-server – Gumbo

Antwort

0

Wenn der Benutzer auf den Link klickt, wechselt er von seinem Server zu Ihrem Server.

Und wenn er auf Ihrem Server angemeldet ist, dann können Sie alle erforderlichen Prüfungen durchführen, da er versucht, auf die Datei auf Ihrem Server zuzugreifen. Obwohl der Link auf einem anderen Server angezeigt wird.

Das ist, wenn Sie Sitzungen verwenden, um den Benutzer angemeldet zu halten, sollte es im Download-Code genug sein, um die Sitzung mit session_start() zu starten, und der Benutzer sollte Sitzung eingeloggt sein, die er bereits hat.

+1

ich denke, das Problem ist, dass der Benutzer auf Server A, während die Datei angemeldet sein muss befindet sich auf unbekanntem (Google) s Server B. – stefs

1
users server = serverA.com 
your server = serverB.org 

wenn ich verstehe es richtig, das Problem ist, dass der Benutzer nur auf Server A angemeldet ist, aber nicht auf dem Server B, und es gibt keine Möglichkeit, den Sitzungsstatus (zB Session-Handling über eine Datenbank zu teilen)

aus der Spitze von meinem Kopf, ich kann von einer Option denken:

Server B fragt einfach Server A
Mittel: Link auf serverA enthält den Session-ID Benutzer *. serverB fragt dann Server A, ob die Sitzung gültig ist.

Sie können es nicht ohne Kommunikation zwischen diesen beiden Servern tun.

* Hinweis: anstelle der Session-ID wäre es besser, ein zufälliges Token zu verwenden. Sitzungs-IDs sollten nicht privat sein.

, die Ihre Benutzer nicht daran hindert, die URL zu teilen. Wenn sie also möchten, dass jemand anderes die Datei herunterlädt, können sie einfach die URL weitergeben. Auf der anderen Seite könnte ein böswilliger Benutzer dies auch mit seiner Session-ID tun.

1

Sie können den Downloadlink dazu verwenden, ein Formular mit den Benutzerinformationen an den Zielserver zu senden. Dies hat Sicherheitseinbußen zur Folge, da die Anmeldeinformationen in der Quelle der Seite als Werte für ausgeblendete Formularfelder angezeigt werden, also vielleicht nicht so, wie Sie es möchten.

Eine zweite Option wäre, die Sitzungsinformationen in einer Datenbank zu speichern und den Sitzungsschlüssel einfach an den neuen Server zu übergeben. Dies würde erfordern, dass der zweite Server in der Lage ist, die Datenbank des ersten Servers zu kontaktieren und eine Abfrage darauf auszuführen. Das Einrichten eines Benutzernamens mit Berechtigungen zum Anmelden von diesem Server für Lesezugriff sollte ausreichend sein, um dies zu tun, ohne viele Sicherheitslöcher zu öffnen.

Schließlich können Sie einen Web-Service auf dem ersten Server einrichten, der bei Eingabe eines Benutzernamens eine Ja/Nein-Antwort zurückgibt und den angemeldeten Status des Benutzers überprüft. Der empfangende Link auf dem zweiten Server würde dann den Benutzernamen übernehmen und den eingeloggten Status vor dem Aufbau der Antwort überprüfen.

Verwandte Themen