Wir haben kürzlich unsere Anwendung auf Spring 3.0 und Spring Security 3.0 aktualisiert. Abgesehen von der zusätzlichen Arbeit, die wir tun wollen, ist das Backend vom Frontend aus verschiedenen Gründen zu trennen. Wir planen, die transparente RMI-Lösung von Spring zu verwenden, um unsere Dienste unserem Frontend zur Verfügung zu stellen. Wie auch immer die Dinge heute aussehen, verlassen sich sowohl das Front- als auch das Backend auf den Spring SecurityContext, um Dienste usw. vor unberechtigten Benutzern zu schützen. Soweit ich weiß, ist der SecurityContext per JVM? Wenn das richtig ist, wie kann ich den Kontext effektiv mit dem Backend teilen? Ich würde annehmen, das Authentifizierungs-Token für RMI-Aufrufe, die es erfordern, übergeben?Spring Security in einer verteilten Anwendung
6
A
Antwort
9
Nachdem ich bereits mit Spring's HTTP-Invoker-Remoting gearbeitet habe, kann ich sagen, dass es eine integrierte Unterstützung für die Übergabe von Spring-Sicherheitstoken gibt. Ich würde annehmen, dass Spring RMI-Lösung auch diese Funktion hat, aber Sie müssen sich in Spring RMI-Klassen/javadoc zu erkunden, um dies zu bestätigen.
Auf der Clientseite benötigen Sie die Klasse ContextPropagatingRemoteInvocationFactory
, die beim Remoteaufruf automatisch einen Spring-Sicherheitskontext enthält.
Sie haben Recht. Ich habe im Frühjahrsreferenzhandbuch gesucht und gefunden, wo es heißt, dass es keine direkte Unterstützung gibt, aber der Haken existiert. Also durchforstete ich die Java-Dokumente und fand die ContextPropatingRemoteInvocation von Federal Security, die es den Client-Aufrufen erlaubt, das Authentifizierungsobjekt bei Remote-Aufrufen weiterzuleiten. Süß, danke! – predhme
so stimmen Sie seine Antwort, predhme –