2010-12-09 5 views
7

Wenn ich das Spring Security- und Application Server-Clustering verwende und die HTTP-Sitzung repliziert wird, ist es dann möglich, dass ein authentifizierter Benutzer automatisch zu einem anderen Knoten im Cluster fail-over und trotzdem angemeldet ist? Wäre es besser, einen verteilten Cache zu verwenden, anstatt die Sitzung im gesamten Cluster zu replizieren?Wie kann ich Spring Security mit einem Cluster mit Sitzungsreplikation verwenden, um einen authentifizierten Benutzer auszufallen?

Antwort

2

Ja. Der Sicherheitskontext von Spring Security wird als Wert in Ihrer Sitzung gespeichert. Wenn Ihre Sitzung also repliziert wird, wird der Sicherheitskontext ebenfalls verwendet, sodass es nicht darauf ankommt, auf welchen Mitarbeiter Ihr authentifizierter Benutzer trifft.

Natürlich ist die Sitzungsreplikation nicht sofort, daher ist es möglich, dass der Failover-Server keine Chance hat, den replizierten Kontext zu übernehmen, wenn sich der Benutzer kurz vor dem Ausfall des Servers authentifizierte. Aber wenn sie sich authentifizierten und dann eine Menge Dinge taten, und dann der Server fehlschlug, wäre der Sicherheitskontext bereits repliziert worden, und die Sitzung des Benutzers sollte auf dem neuen Failover-Server weitermachen, wo er aufgehört hatte.

Dies wird unter tomcat vs jboss vs weblogic etwas anders sein, also müssen Sie wirklich testen, um sicherzustellen, dass Ihr bestimmter Anwendungsfall abgedeckt ist.