2017-06-14 2 views
0

Ich habe eine Anwendung in Grails mit Feder-Sicherheit für Benutzer und Rollen-Management. Seit ein paar Tagen habe ich ein seltsames Problem: Wenn sich ein Benutzer irgendwann anmeldet, wird der Benutzer ein anderer Benutzer (Session-Mix).Angemeldet Benutzer Sitzung verwechseln in Grals Frühling Sicherheit auf Kater

Beispiel: Benutzer A meldet sich beim System an, Benutzer B meldet sich beim System von einem anderen Browser an. Bei Bewegung durch Controlleraktionen wird Benutzer A zu Benutzer B in System A, ebenso wie Benutzer B.

Dieses Problem ist in der PRODUKTION und nicht in der Entwicklung.

Ich habe einige ähnliche Fälle über das Internet gefunden, aber keine der Grals. Spring Security/JSF/Hibernate Accidental Session Hijacking on Tomcat?, diese ähnliche, aber in JSF und Lösung erwähnt scheint nicht für mich zu arbeiten. Eine andere ist Session mix up - apache httpd with mod_jk, tomcat, spring security - serving data of other user, aber hier scheint die Ausgabe wegen mod_jk zu sein, was bei mir nicht der Fall ist (ich habe mod_jk nicht benutzt).

Meine Systemversionen:

  • Grails Version: 3.2.4
  • Groovy Version: 2.4.7
  • JVM Version: 1.8.0_05
  • Version Server: Apache Tomcat/8.5.14
  • JVM Version: 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13
+0

Der Schlüssel wird etwas beim ISP sein. Etwas in ihrer Infrastruktur, ein Web-Proxy oder etwas anderes. –

+0

Aber würde der ISP wirklich die Benutzersession beeinflussen, die von der Federsicherheit verfolgt wird? Weil ich kein Problem mit Seitenumleitung oder irgendetwas solcher aber der Sitzung habe, die ich denke, wird durch Frühlingssicherheit und Tomcat aufrechterhalten. – Jumper

+0

Es klingt wie der Cookie-Wert (Sitzungs-ID), der verwendet wird, um einen Browser mit einer Sitzung zu verknüpfen, wird irgendwo während der Anforderung ausgetauscht, die durch den ISP reist, bevor es den Server erreicht. Haben Sie versucht, HTTPS zu verwenden und Cookies zu sichern? Vielleicht verhindern Sie dies. –

Antwort

0

Endlich fand ich das Problem.

Schuldige waren die ISPs (derzeit in Subisu und Mercantile in Nepal gefunden). Sie würden tatsächlich die gesamte angeforderte Seite zwischenspeichern und wenn die gleiche URL von einem anderen Benutzer innerhalb eines bestimmten Zeitrahmens (einige Stunden) angefordert wird und beide Benutzer im selben ISP-Netzwerk sind, würde die zwischengespeicherte Seite für den nächsten Benutzer gerendert werden.

Wie ich mein Problem fand: Ich habe ein Experiment. Zuerst habe ich mich mit zwei verschiedenen Benutzern auf verschiedenen Computern in demselben ISP angemeldet, ich habe das Problem sofort gefunden. Dann habe ich einen Benutzer in diesem ISP ausgeloggt, von diesem ISP getrennt, mit einem anderen ISP verbunden und im System angemeldet. Jetzt hatte ich Benutzer1 in Computer1 in ISP1 und Benutzer2 in Computer2 in ISP2, auch nach dem Durchsuchen für eine halbe Stunde wurde das Problem nicht gefunden.

Wie ich es behoben: Ich generierte eindeutige UUID und an jeden Menü Link angehängt. Dies macht jede URL anders, es war 4 Tage und das Problem wurde nicht einmal gefunden. In einigen Menüs habe ich nicht die eindeutige Uuid und immer noch das Problem, aber nicht in denen, wo ich die eindeutige Zeichenfolge.

+0

Wow, das ist ziemlich schreckliches ISP-Verhalten. – doelleri

Verwandte Themen