Voglio rendere la mia licenza webapp protetta. Quando viene richiesta una pagina/risorsa di webapp, voglio prima controllare la licenza. Se la licenza non viene trovata, desidero reindirizzare alla pagina di caricamento della licenza.Java: concessione della licenza a una webapp. Verifica la licenza prima che avvenga il login
Ho creato un filtro che mappa tutte le richieste in cui posso controllare la licenza e reindirizzare se necessario. Il problema è che la mia webapp ha un vincolo di sicurezza per l'autenticazione di login. vedi web.xml alla fine per maggiori informazioni.
A causa del vincolo di sicurezza, tutte le richieste vengono prima intercettate dall'autenticazione di accesso e quindi inoltrate al mio filtro. Tuttavia, voglio verificare la licenza prima che il login possa accadere.
Ecco una domanda correlata che ho chiesto.
Java : Intercept all requests before they go to login authentication
Dare priorità filtro sopra il vincolo di sicurezza sembra essere impossibile. Quindi, voglio chiedere c'è un altro modo in cui posso affrontare questo caso d'uso?
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>
Questo non è qualcosa che ho usato, ma mi chiedo se JACC è la soluzione al tuo problema? Credo che agisca come un gancio nel processo di limitazione della sicurezza. Ho trovato il riferimento in [questa domanda SO] (http://stackoverflow.com/questions/17654020/precedence-of-security-constraint-over-filters-in-servlets), che ti sta ponendo una domanda simile, e si collega a [questo post del blog] (http://arjan-tijms.omnifaces.org/2014/03/implementing-container-authorization-in.html) sull'argomento. – DaveyDaveDave