2016-06-12 14 views
0

Von der Spring Session Rast Beispiel: http://docs.spring.io/spring-session/docs/current/reference/html5/guides/rest.htmlSpring Session Ruhe und AuthenticationManager

Ich habe die Probe auf Cloud Foundry eingesetzt und es funktioniert. Ich frage mich, wie die Sitzung mit Spring Security AuthenticationManager funktioniert, um das x-auth-Token in der zweiten Anfrage zu authentifizieren. Ich habe den Code in der Spring Session überprüft, aber keine Details gefunden.

Nach meinem Verständnis wird der Authentifizierungsmanager die Sitzung im SessionRepository durch das x-auth-Token suchen.

Kann mir jemand zeigen, wie die Authentifizierung in der Spring Session Rest funktioniert?

+0

Bitte keine nackten Links posten, stattdessen den 'Hyperlink einfügen' (Strg + L) verwenden. – Stacked

Antwort

0

Was Spring Security angeht, gibt es in diesem Beispiel keine Unterschiede zu einer Anwendung, die Spring Session nicht verwendet (d. H. Verwendet den internen Sitzungsspeicher und den JSESSIONID-Cookie des Servlet-Containers).

Spring Session verwendet org.springframework.session.web.http.SessionRepositoryFilter, um die Implementierung HttpSession des Servlet-Containers durch eine benutzerdefinierte Implementierung zu ersetzen, die von Spring Session unterstützt wird. Dieser Filter bietet auch HttpSessionStrategy (entweder Cookie basierte oder, wie in Ihrer Probe, HTTP-Anfrage-Header basiert), um die von Ihnen bereitgestellten Informationen (wieder, entweder über Cookie oder Header) zu der Sitzung in SessionRepository Implementierung Ihrer Wahl zu korrelieren. Danach hängt alles davon ab, wie Ihre Anwendung die Sitzung verwendet.

Beachten Sie, dass Spring Security AuthenticationManager einfach Authentifizierungsanforderungen für die bereitgestellten Token Authentication behandelt. Es hat keine Kenntnisse der Sitzung oder irgendetwas anderes Web/Servlet API bezogen.

+0

Basierend auf dem Frühjahrssession-Rest-Beispiel kann das x-auth-Token zur Authentifizierung in den Header aufgenommen werden. Die Dinge sind für AuthenticationManager, die Authentifizierung von SecurityContextHolder ist leer. – shcoder

+0

Wie in der obigen Antwort erläutert, wird der 'x-auth-token'-Header nur verwendet, um Ihre Anfrage mit der auf dem Server persistierenden Sitzung zu korrelieren, sie ist nicht direkt mit dem Authentifizierungsprozess per se verbunden. Bitte beachten Sie die 'SessionRepositoryFilter' Quelle und Javadoc. Sie können auch das [Session-Strategie-Beispiel aus diesem Repo] (https://github.com/vpavic-demos/javacro16-spring-session) betrachten, da es ein viel einfacheres Beispiel ist, das Spring Security nicht enthält. –

+0

Ich überprüfte den Quellcode von Spring Session und Spring Security. Spring Session SessionRepositoryFilter ersetzt die HttpSession durch die Spring Session. SecurityContextPersistenceFilter macht die Magie. Wenn sich der Benutzer zum ersten Mal anmeldet, wird der Sicherheitskontext in Spring Session generiert und gespeichert und von SecurityContextRepository gespeichert. Bei der nächsten Benutzeranmeldung lädt SecurityContextPersistenceFilter den Kontext von SecurityContextRepository und setzt ihn im SecurityContextHolder. Bitte korrigieren Sie mich, wenn das nicht der Fall ist. – shcoder

Verwandte Themen