En una aplicación web de Java (war), ¿cómo puedo usar HTTP-auth para contenido estático?

StackOverflow https://stackoverflow.com/questions/825142

Pregunta

Tengo una aplicación web de Java. La aplicación web está empaquetada como un archivo de guerra. Estos archivos de guerra permiten contenido estático, que se entrega directamente a través de HTTP. Para los servlets en esta guerra, puedo hacer una autenticación HTTP (implementarla con el propio servlet). Pero también quiero HTTP-auth para el contenido estático. ¿Cómo puedo darme cuenta de esto?

¿Fue útil?

Solución

Crea una clase que implemente javax.servlet.Filter. Consulte Lo esencial de los filtros

El método principal es doFilter que se pasa a los objetos ServletRequest, ServletResponse y FilterChain. Ahí es donde se aplica la autenticación.

Luego declare su filtro en web.xml y una asignación de filtro como sigue (se asigna a cada solicitud)

    <filter>
            <filter-name>Authentication Filter</filter-name>
            <filter-class>
                    com.nfsdsystems.security.filters.AuthenticationFilter</filter-class>
    </filter>
    <filter-mapping>
            <filter-name>Authentication Filter</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>

Otros consejos

Coloque sus archivos html estáticos en un directorio y defina sus restricciones de seguridad en su web.xml. Asigne las restricciones al rol apropiado.

<security-constraint>
        <display-name>securedResources</display-name>
        <web-resource-collection>
            <web-resource-name>securedRes</web-resource-name>
            <url-pattern>/secured/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>PUT</http-method>
            <http-method>HEAD</http-method>
            <http-method>TRACE</http-method>
            <http-method>POST</http-method>
            <http-method>DELETE</http-method>
            <http-method>OPTIONS</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description>
            authenticatedUser_securedRes</description>
            <role-name>authenticatedUsed</role-name>
        </auth-constraint>
    </security-constraint>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top