W SpringSecurity ma nazwę klasy SecurityContextHolder i jej specyfikację: "Kojarzy dane SecurityContext z bieżącym wątkiem wykonawczym." Z aplikacją sieciową, gdy żądanie przychodzi do serwera, Spring również przeładowuje i ustawia SecurityContext tego żądania w SecurityContextHolder dla swojego wątku?W jaki sposób Spring Security zarządza SecurityContext w wątku w żądaniach aplikacji WWW?
Odpowiedz
Z aplikacją sieciową, gdy żądanie przychodzi do serwera, a następnie Spring również przeładować i ustawić SecurityContext tego żądania w SecurityContextHolder dla swojego wątku?
Zasadniczo tak.
Domyślnym zachowaniem SecurityContextHolder.getInstance()
jest zwrócenie instancji SecurityContextHolder
, która została zapisana jako lokalny wątek bieżącego wątku. (To jest tylko mechanizm domyślne. Można użyć innej strategii dla lokalizowania SecurityContextHolder
wywołując SecurityContextHolder.setStrategemName()
)
A filtry SpringSecurity upewnić się, że wniosek na SecurityContextHolder
(jednak znajduje) jest ładowany z poświadczeniami żądanie na początku i że posiadacz jest rozliczany na koniec przetwarzania wniosku.
opracowanie, kluczem jest to, że filtr wygląda w atrybuty zdalnego wywołania dla bezpieczeństwa kontekst. Tylko jeśli kontekst bezpieczeństwa jest w zdalnych atrybutach wywołania, można go ustawić w SecurityContextHolder. Ten kontekst zabezpieczeń jest zwykle dostarczany z klienta za pomocą podobnego filtru, który przetwarza wychodzące wywołanie i umieszcza kontekst zabezpieczeń z wątku lokalnego na zdalne wywołanie. – Zach
[Dlaczego to nie działa] (https://github.com/spring-projects/spring-security/issues/3919) dla mnie? Zobacz pytanie [stackoverflow] (http://stackoverflow.com/questions/34273755/why-is-the-authentication-object-the-securitycontext-not-shared-across-thread). – displayname
Tak, zajmuje się tym . Domyślnie lokalizuje SecurityContext w HttpSession i wiąże go z wątkiem za pomocą SecurityContextHolder. Po zakończeniu przetwarzania żądania wykonuje odwrotność - pobiera element SecurityContext z wątku i umieszcza go w sesji.
Z Javadoc:
Zapełnia SecurityContextHolder z informacji uzyskanych od skonfigurowany SecurityContextRepository przed życzenie i sklepach go z powrotem w repozytorium raz wniosek został wypełniony i wyczyszczenie posiadacza kontekst. Domyślnie używa on HttpSessionSecurityContextRepository.
Czy nie powinno to również powodować, że wątek będzie bezpieczny? Wygląda na to, że "SecurityContext" nie jest współdzielony przez wątki w mojej aplikacji ([link] (http://stackoverflow.com/questions/34273755/why-is-the-authentication-object-the-securitycontext-not -shared-across-thread)). – displayname
- 1. Jak skonfigurować kontekst aplikacji WWW w Spring Spring MVC
- 2. W jaki sposób <global-method-security> może działać na moim kontrolerze przez Spring-Security?
- 3. W jaki sposób OS X ładuje aplikację opartą na scenorysach i w jaki sposób zarządza oknami?
- 4. W jaki sposób Monotouch zarządza zasobami (ciągi znaków, obrazy itp.)?
- 5. Jak dynamicznie zmieniać kontekst aplikacji w Spring Security?
- 6. Spring Social facebook + Spring Security
- 7. Ramy jak Spring Security dla Java EE?
- 8. W jaki sposób Ember Data zarządza dużą ilością rekordów?
- 9. W jaki sposób zarządza się projektami open source?
- 10. Java: W jaki sposób program ArrayList zarządza pamięcią
- 11. W jaki sposób Python zarządza int i długim?
- 12. W jaki sposób zarządza się pamięcią podczas nadpisywania obiektów R?
- 13. W jaki sposób Intellij IDEA zarządza zależnościami wtyczek?
- 14. Jak wyłączyć Spring Security w Spring Boot Application
- 15. Zmiana konfiguracji Spring Security
- 16. planowanie wątku po wątku w aplikacji iPhone
- 17. Content-Security-Policy Spring Security
- 18. Spring Security: Set GrantedAuthority
- 19. W jaki sposób jar może rozprzestrzenić lukę w aplikacji internetowej, w której jest używana?
- 20. Spring Security OpenID - UserDetailsService, AuthenticationUserDetailsService
- 21. Invalidate spring security session
- 22. Ignoruj połączenie WebSocket w Spring Security SavedRequest
- 23. Używając Spring Security OAuth2, jaki jest właściwy sposób na odświeżenie zapisanego uwierzytelnienia w TokenStore?
- 24. W jaki sposób programowo uwierzytelniać użytkownika przy użyciu Spring Security przy użyciu obiektu DaoAuthenticationProvider
- 25. W jaki sposób mogę przeprowadzić ponowne indeksowanie w stylu Google w mojej aplikacji (www lub konsoli)?
- 26. Jak działają sesje Spring Security?
- 27. Spring Security Java Config
- 28. Grails Spring Security Testing
- 29. Używanie bazy danych mysql do uwierzytelniania użytkowników w Spring Security?
- 30. Spring Security Wygaśnięcie potwierdzenia SAML z wygaśnięciem sesji aplikacji
proszę zobaczyć http://stackoverflow.com/questions/6408007/spring-securitys-securitycontextholder-session-or-request-bound – Ritesh