Có thể đề cập đến cả xác thực dựa trên mẫu và cơ bản trong bảo mật mùa xuân bằng cách sử dụng cấu hình không gian tên mà không ghi đè khác không? Vì vậy, việc áp dụng có thể phục vụ cả hai trình duyệt dựa trên yêu cầu và từ xa khách hàng.Bảo mật mùa xuân - cách đề cập đến cả xác thực dựa trên mẫu và cơ bản
Trả lời
Dường như không thể khai báo cả xác thực mẫu và cơ sở bằng cách sử dụng cấu hình không gian tên.
Một liên kết tham chiếu đến cộng đồng xuân: http://forum.springsource.org/showthread.php?t=72724&highlight=form+basic+authentication
Kết quả cuối cùng bạn muốn là có thể, tôi đã chạy vào mà cùng một vấn đề chính xác và đây là giải pháp của tôi.
Bất cứ lúc nào khi xác định đăng nhập biểu mẫu trong không gian tên, nó sẽ tự động ghi đè bất kỳ bộ lọc xác thực nào khác mà bạn áp dụng qua không gian tên. Điều này được thực hiện thông qua thứ tự của chuỗi bộ lọc nhìn vào FilterChainOrder.java trong bảo mật mùa xuân để xem thứ tự thực sự được áp dụng như thế nào cho mỗi bộ lọc.
Để giải quyết vấn đề này, hãy xóa thẻ http cơ bản khỏi không gian tên, sau đó xác định bean để xử lý xác thực cơ bản và đặt hàng trước AuthenticationProcessingFilter vì đây là bộ lọc bảo mật mùa xuân sẽ xử lý đăng nhập biểu mẫu.
Dòng BasicProcessingFilter cung cấp để xử lý Xác thực cơ bản là bộ lọc thụ động, có nghĩa là nếu thông tin đăng nhập bị thiếu, nó sẽ tiếp tục xuống chuỗi lọc cho đến khi tìm thấy bộ lọc thích hợp để xử lý yêu cầu.
Bây giờ bằng cách xác định thủ công hạt BasicProcessingFilter chúng ta có thể đặt thứ tự nó sẽ xuất hiện trong chuỗi bộ lọc. Dưới đây là một ví dụ về khai báo xml bổ sung mà bạn sẽ cần phải cung cấp trong xml an ninh (Xuân An < 3.x)
<bean id="basicProcessingFilter" class="org.springframework.security.ui.basicauth.BasicProcessingFilter">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<security:custom-filter before="AUTHENTICATION_PROCESSING_FILTER"/>
<property name="authenticationEntryPoint"><ref bean="authenticationEntryPoint"/></property>
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint">
<property name="realmName" value="My Realm Here"/>
</bean>
Cũng lưu ý nếu tham khảo authenticationManager của bạn không tìm thấy bạn có thể thêm một bí danh để không gian tên của bạn giống như không gian tên bên dưới.
<security:authentication-manager alias="authenticationManager"/>
Kết quả cuối cùng là bộ lọc cơ bản sẽ được áp dụng như một bộ lọc thụ động và nếu thông tin cần thiết của nó đang thiếu nó sẽ tiếp tục xuống chuỗi bộ lọc và bộ lọc hình thức đăng nhập sau đó sẽ xử lý nó.
Vấn đề với cách tiếp cận này là nếu thông tin xác thực được nhập chính xác, phản hồi trở lại là trang đăng nhập từ bộ lọc đăng nhập biểu mẫu.
Tuy nhiên, Có vẻ như vấn đề này sẽ được khắc phục vào mùa xuân ở phiên bản 3.1 của bảo mật mùa xuân và công việc này sẽ không còn cần thiết nữa.
response by @grimesjm là đúng. Tuy nhiên, nếu bạn đang sử dụng Spring 3.x bạn phải thích ứng với tên lớp để:
<bean id="basicProcessingFilter" class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
<property name="authenticationManager">
<ref bean="authenticationManager" />
</property>
<property name="authenticationEntryPoint">
<ref bean="authenticationEntryPoint" />
</property>
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint">
<property name="realmName" value="Your realm here" />
</bean>
Và
<sec:http auto-config="true">
... your intercept-url here
<sec:custom-filter before="SECURITY_CONTEXT_FILTER" ref="basicProcessingFilter" />
<sec:form-login ... />
....
</sec:http>
Tôi không biết liệu việc đặt các bộ lọc trước khi SECURITY_CONTEXT_FILTER
là lựa chọn tốt nhất hay không .
Giờ đây bạn có thể thực hiện với Bảo mật mùa xuân 3.1.0
Điều này là đúng, đây là một liên kết sẽ mở rộng trên câu trả lời này: http://stackoverflow.com/questions/3671861/two-realms-in-same-application-with-spring-security –
Tôi nghĩ rằng mục tiêu là có REST API hỗ trợ cả hai xác thực trong cùng một lĩnh vực. Xác định hai cõi giống như xác định hai cuộc chiến tranh - nó hoạt động nhưng nó không lý tưởng. – Eugen
- 1. Xác thực bảo mật mùa xuân qua mã thông báo
- 2. Xác thực tùy chỉnhFilter Bảo mật mùa xuân 3.2
- 3. Cấu hình bảo mật mùa xuân dựa trên mã số
- 4. Bảo mật mùa xuân 3.2 Xác thực mã thông báo
- 5. Bảo mật mùa xuân 3.0- Tùy chỉnh Hộp thoại xác thực cơ bản http
- 6. Bảo mật mùa xuân 3.0 - Cấp phép với xác thực
- 7. Bảo mật mùa xuân @RequestBody
- 8. Xác thực tùy chỉnh bảo mật mùa xuân và mã hóa mật khẩu
- 9. xác định url mục tiêu dựa trên vai trò trong bảo mật mùa xuân 3.1
- 10. Vấn đề bảo mật mùa xuân với lỗi 404?
- 11. Nghỉ ngơi xác thực cơ bản thông qua bảo mật mùa xuân mà không cần đăng nhập bằng hình thức
- 12. Kiểm tra và bảo mật mùa xuân: Cách xác thực giả?
- 13. Lựa chọn thay thế cho bảo mật mùa xuân ở Java (mùa xuân)
- 14. Bảo mật xác thực dựa trên mã thông báo
- 15. OpenID bảo mật mùa xuân - UserDetailsService, AuthenticationUserDetailsService
- 16. Cấu hình vấn đề về bảo mật mùa xuân
- 17. Bảo mật mùa xuân: Đặt GrantedAuthorities
- 18. Bảo mật mùa xuân: Người dùng xác thực theo cách thủ công
- 19. Bảo mật mùa xuân: userdetails tùy chỉnh
- 20. Bảo mật mùa xuân với AcceptHeaderLocaleResolver và i18n
- 21. 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?
- 22. Bảo mật mùa xuân null pointer exception
- 23. Jersey JAX-RS + Mẫu ứng dụng bảo mật mùa xuân
- 24. Mã hóa bảo mật mùa xuân MD5
- 25. Bảo mật mùa xuân: nhiều ngữ cảnh bảo mật nhưng trả về lỗi xác thực-lỗi-url
- 26. Bảo mật mùa xuân Dịch vụ RememberMe với Cookie phiên
- 27. Trang đăng nhập bảo mật mùa xuân
- 28. bảo mật mùa xuân: ủy quyền mà không cần xác thực
- 29. Đảm bảo xác thực dựa trên cookie
- 30. Xác thực bảo mật mùa xuân: nhận tên người dùng mà không có SPRING_SECURITY_LAST_USERNAME
Họ đã thêm khả năng thêm nhiều