Trong SpringSecurity nó có một tên lớp SecurityContextHolder và spec của nó: 'Liên kết một SecurityContext cho trước với chuỗi thực hiện hiện hành.' Với ứng dụng web bất cứ khi nào một yêu cầu đến máy chủ thì Spring cũng tải lại và thiết lập SecurityContext của yêu cầu đó trong SecurityContextHolder cho chủ đề của nó?Bảo mật mùa xuân quản lý SecurityContext trong một chuỗi qua các yêu cầu ứng dụng web như thế nào?
Bảo mật mùa xuân quản lý SecurityContext trong một chuỗi qua các yêu cầu ứng dụng web như thế nào?
Trả lời
Với ứng dụng web bất cứ khi nào có yêu cầu đến máy chủ thì Spring cũng tải lại và đặt SecurityContext của yêu cầu đó trong SecurityContextHolder cho chuỗi của nó?
Về cơ bản có.
Hành vi mặc định là SecurityContextHolder.getInstance()
là trả về phiên bản SecurityContextHolder
mà nó được lưu trữ dưới dạng chuỗi nội tuyến của chuỗi hiện tại. (Đây chỉ là cơ chế mặc định. Bạn có thể sử dụng một chiến lược khác nhau để định vị các SecurityContextHolder
bằng cách gọi SecurityContextHolder.setStrategemName()
)
Một bộ lọc SpringSecurity đảm bảo rằng các nhân yêu cầu SecurityContextHolder
(tuy nhiên nó nằm) được nạp với các thông tin yêu cầu vào lúc bắt đầu và rằng chủ sở hữu sẽ bị xóa khi kết thúc xử lý yêu cầu.
Xây dựng, chìa khóa là bộ lọc trông trong invocation từ xa thuộc tính đối với an ninh bối cảnh. Chỉ khi một ngữ cảnh bảo mật nằm trong các thuộc tính gọi từ xa, nó có thể được đặt trong SecurityContextHolder. Ngữ cảnh bảo mật này thường được cung cấp từ máy khách với một bộ lọc tương tự xử lý lời gọi đi và đặt ngữ cảnh bảo mật từ luồng cục bộ vào lời gọi từ xa. – Zach
[Tại sao điều này không hoạt động] (https://github.com/spring-projects/spring-security/issues/3919) cho tôi? Xem [câu hỏi stackoverflow] (http://stackoverflow.com/questions/34273755/why-is-the-authentication-object-of-the-securitycontext-not-shared-across-thread). – displayname
Có, số SecurityContextPersistenceFilter sẽ giải quyết vấn đề này. Theo mặc định, nó định vị SecurityContext trong HttpSession và liên kết nó với luồng thông qua SecurityContextHolder. Khi yêu cầu được xử lý xong, nó đảo ngược - nó lấy SecurityContext từ chuỗi và đặt nó trong phiên.
Từ Javadoc:
populates SecurityContextHolder với thông tin thu được từ cấu hình SecurityContextRepository trước khi yêu cầu và các cửa hàng nó trở lại trong kho một khi yêu cầu đã hoàn thành và thanh toán bù trừ người giữ bối cảnh. Theo mặc định, nó sử dụng một HttpSessionSecurityContextRepository.
Không nên làm cho nó cũng là chủ đề an toàn? Có vẻ như 'SecurityContext' không được chia sẻ qua các luồng trong ứng dụng của tôi ([link] (http://stackoverflow.com/questions/34273755/why-is-the-authentication-object-of-the-securitycontext-not -chia-qua-chủ đề)). – displayname
- 1. Bảo mật mùa xuân trong một ứng dụng được phân phối
- 2. Bảo mật mùa xuân @RequestBody
- 3. Bảo mật mùa xuân 3.0 - Cấp phép với xác thực
- 4. Làm cách nào để lưu trữ thông tin tùy chỉnh trong SecurityContext của bảo mật mùa xuân?
- 5. Xác thực bảo mật mùa xuân qua mã thông báo
- 6. Cầu cảng xử lý nhiều yêu cầu như thế nào
- 7. Yêu cầu dịch vụ web bảo mật
- 8. Bảo mật mùa xuân: setUserPrincipal theo cách thủ công
- 9. Bảo mật mùa xuân trong ứng dụng web không quốc tịch?
- 10. Jersey JAX-RS + Mẫu ứng dụng bảo mật mùa xuân
- 11. Bảo mật mùa xuân: không bao gồm tài liệu WSDL yêu cầu xác thực
- 12. Làm thế nào để viết một bộ lọc tùy chỉnh trong bảo mật mùa xuân?
- 13. Mã hóa bảo mật mùa xuân MD5
- 14. Bảo mật mùa xuân null pointer exception
- 15. yêu cầu ajax mùa xuân
- 16. Bảo mật mùa xuân đảm bảo lớp dịch vụ, lớp dịch vụ web hoặc cả hai?
- 17. Yêu cầu bảo mật cho các ứng dụng y tế
- 18. Xuân quản lý xác thực lỗ hổng bảo mật
- 19. Bảo mật mùa xuân: Đặt GrantedAuthorities
- 20. Lựa chọn thay thế cho bảo mật mùa xuân ở Java (mùa xuân)
- 21. Bảo mật mùa xuân: lập trình đăng nhập
- 22. Bộ lọc IP sử dụng Bảo mật mùa xuân
- 23. Bảo mật mùa xuân: userdetails tùy chỉnh
- 24. Mùa xuân 3.1 MVC, Bảo mật mùa xuân 3.1 - Mã thông báo CSRF
- 25. Trang đăng nhập bảo mật mùa xuân
- 26. OpenID bảo mật mùa xuân - UserDetailsService, AuthenticationUserDetailsService
- 27. Bảo mật mùa xuân 3.0 - Chặn đánh chặn - Tất cả các trang yêu cầu xác thực nhưng
- 28. Vấn đề bảo mật mùa xuân với lỗi 404?
- 29. Bảo mật mùa xuân 3.2 Xác thực mã thông báo
- 30. Bỏ qua kết nối WebSocket trong Bảo mật mùa xuân SavedRequest
Xin xem http://stackoverflow.com/questions/6408007/spring-securitys-securitycontextholder-session-or-request-bound – Ritesh