Tôi muốn bảo vệ giấy phép webapp của mình. Khi bất kỳ trang/tài nguyên nào của webapp được yêu cầu, trước hết tôi muốn kiểm tra giấy phép. Nếu không tìm thấy giấy phép thì tôi muốn chuyển hướng đến trang tải lên giấy phép.Java: Cấp phép ứng dụng web. Kiểm tra giấy phép trước khi đăng nhập xảy ra
Tôi đã tạo bộ lọc ánh xạ tới tất cả các yêu cầu mà tôi có thể kiểm tra giấy phép và chuyển hướng nếu cần. Vấn đề là webapp của tôi có hạn chế về bảo mật xác thực đăng nhập. xem web.xml ở cuối để biết thêm thông tin.
Vì ràng buộc bảo mật, tất cả các yêu cầu đầu tiên bị chặn bởi xác thực đăng nhập và sau đó được chuyển tiếp đến bộ lọc của tôi. Tuy nhiên, tôi muốn kiểm tra giấy phép trước khi đăng nhập có thể xảy ra.
Đây là câu hỏi liên quan mà tôi đã hỏi.
Java : Intercept all requests before they go to login authentication
Ưu tiên bộ lọc trên các hạn chế an ninh dường như là bất khả thi. Vì vậy, tôi muốn hỏi là có cách nào khác tôi có thể tiếp cận trường hợp sử dụng này?
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Tango</display-name>
<filter>
<filter-name>SalsaValidationFilter</filter-name>
<filter-class>net.semandex.salsa.validationFilters.SalsaValidationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SalsaValidationFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- <servlet-name>SalsaValidationServlet</servlet-name> -->
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Login page images</web-resource-name>
<url-pattern>/images/salsadb-logo2.png</url-pattern>
<url-pattern>/images/salsa-icon.png</url-pattern>
<url-pattern>/images/shadow_box.png</url-pattern>
<url-pattern>/images/header.png</url-pattern>
<url-pattern>/images/bg.png</url-pattern>
<url-pattern>/css/splash.css</url-pattern>
<url-pattern>/WEB-INF/licenseValidation.html</url-pattern>
<url-pattern>/auth/licenseValidation.html</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>The entire webapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>SalsaUser</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>SalsaUser</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/auth/login.jsp</form-login-page>
<form-error-page>/auth/loginError.jsp</form-error-page>
</form-login-config>
<realm-name>mongo_login</realm-name>
</login-config>
</web-app>
Đây không phải là điều tôi đã sử dụng, nhưng tôi tự hỏi liệu JACC có phải là giải pháp cho vấn đề của bạn không? Tôi tin rằng nó hoạt động như một cái móc trong quá trình hạn chế an ninh. Tôi đã tìm thấy nó được tham chiếu trong [câu hỏi SO này] (http://stackoverflow.com/questions/17654020/precedence-of-security-constraint-over-filters-in-servlets), là câu hỏi tương tự cho bạn, và nó liên kết tới [bài đăng trên blog này] (http://arjan-tijms.omnifaces.org/2014/03/implementing-container-authorization-in.html) về chủ đề này. – DaveyDaveDave