2016-06-29 12 views
0

Ich habe das folgende Problem. Der Kunde verfügt über eine Java EE-Webanwendung, die in EAServer 5.5.0 mit einer benutzerdefinierten Anmeldung ausgeführt wird. Die Anmeldung ist sehr einfach, wenn die Anwendung die Anmeldeinformationen überprüft, die vom Benutzer über eine Webseite eingegeben wurden, speichert sie den Benutzernamen und das Profil in einer Sitzungsvariablen. Auf diese Weise weiß die Anwendung, ob die Sitzung noch aktiv ist. Jetzt hat der Kunde eine andere Java EE Webanwendung auf jboss server 7.1 und möchte, wenn sich der Benutzer die Webanwendung, die auf EAServer läuft, anmeldet, sich gleichzeitig in der Anwendung einloggen, die in Jboss Server ausgeführt wird, ohne weitere Schritte.Wie kann ich sesion in zwei Webanwendungen auf verschiedenen Webservern teilen?

Meine erste Idee war, die Zugangsdaten per Ajax-Anruf von EAServer an die Jboss-Webanwendung zu senden und die Zugangsdaten in der Sitzung zu speichern, genau wie beim EAServer. Das scheint im Internet Explorer gut zu funktionieren, aber in Chrome oder Firefox wird der Ajax-Aufruf ausgeführt und die Sitzungsvariablen werden in jboss erstellt, aber wenn der Benutzer versucht, eine Sicht auf die Jboss-Anwendung zu sehen, sind die Sitzungsvariablen einfach verschwunden.

Kann mir bitte jemand sagen, was ist der beste Weg oder die Praxis, dies zu tun? oder welche Art von Problem ich gegenüberstehen mit Chrome und Firefox, die nicht die Sitzungsvariablen nach Ajax-Aufruf halten?

Vielen Dank.

Antwort

0

Die von Ihnen benötigte Funktion heißt Single sign-on. Ich glaube, es ist besser, eine vorhandene Lösung in Ihre Umgebung zu integrieren, als eine benutzerdefinierte Lösung zu erstellen.

habe ich bereits zwei Lösungen dafür:

Es wird keine leichte Aufgabe sein und erfordert einige Kenntnisse über Sicherheitsbedenken.

Wenn Sie wirklich wollen, eine individuelle Lösung zu erstellen gibt einige Informationen hier: http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/

0

Eine Möglichkeit, die Sie tun können, ist die Single Sign-On, dass Leonardo Luiz suggested in den Kommentar.

Aber ich habe einen anderen Vorschlag. Installieren Sie Redis einfach und verwenden Sie es als Sitzungsspeicher. Dies ist heutzutage Standard und wird auch in Ruby on Rails, NodeJs und Java verwendet.

Einige Bibliotheken, die Sie gehen vielleicht bekommen:

Spring Session

Tomcat Redis Session Manager (Ich weiß, Sie sind mit verschiedenen Servlet-Server, aber immer noch können Sie einen Blick erhalten die Idee)

Oder Sie könnte sich dafür entscheiden, memcached zu verwenden. In diesem Fall könnten Sie Folgendes verwenden:

memcached-session-manager