2009-08-25 8 views
7

Tengo una aplicación web basada en servlet que se ejecuta en el servidor Tomcat 6. El esquema de URL es HTTPS. Actualmente, se está publicando todo el sitio en HTTPS. Pero lo que realmente me gustaría hacer es configurar HTTPS solo para ciertas operaciones como comprar e iniciar sesión. ¿Hay alguna configuración en Tomcat que me pueda ayudar a hacer esto fácilmente?Usar HTTPS solo para ciertas páginas en la aplicación basada en servlet

¿Se requieren cambios de código para mantener la sesión en HTTPS y HTTP?

Respuesta

11

Realmente, idealmente, esto se configura en el archivo web.xml de su aplicación web. Simplemente debe especificar ciertas URL que deben ser seguras como <security-constraint><web-resource-collection> y especificar el requisito de HTTPS como <transport-guarantee> con el valor de CONFIDENTIAL. El contenedor administrará los redireccionamientos de manera transparente. Sencillo.

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>My Secure Stuff</web-resource-name> 
    <url-pattern>/some/secure/stuff/*</url-pattern> 
    <url-pattern>/other/secure/stuff/*</url-pattern> 
    ... 
    </web-resource-collection> 
    <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
+0

Gracias por la información, intentaré esto! – Keshav

+0

Intenté agregar esto a mi web.xml, pero Tomcat no redirige, ¡simplemente falla! ¿Estoy haciendo algo mal? Estoy usando Tomcat 5.5.23. – ep4169

+0

Intenté esto en el web.xml de mi aplicación, pero Tomcat no redirige; simplemente no carga nada. ¿Estoy haciendo algo mal? – ep4169

2

Solo necesita configurar un conector HTTP y todo su servlet estará disponible en HTTP también.

Para las operaciones que requiere HTTPS, es necesario para hacer cumplir este mismo así,

if (!request.isSecure()) { 
    response.sendError(HttpServletResponse.SC_FORBIDDEN); 
    return; 
} 

En nuestro caso, la URL de inicio de sesión puede ser escrito en por el usuario por lo que redirigir al usuario a la página HTTPS si el URL HTTP es ingresó.

Si está hablando de sesiones de Servlet (JSESSIONID), no debería tener problemas para compartir sesiones entre HTTP y HTTPS ya que Tomcat no agrega una marca "segura" a las cookies.

Cuestiones relacionadas