Utilizar HTTPS sólo para ciertas páginas de aplicación web basada servlet
Pregunta
Tengo una aplicación web basada servlet que se ejecuta en el servidor Tomcat 6. El esquema URL es HTTPS. Todo el sitio está siendo servido en HTTPS. Pero lo que realmente me gustaría hacer es HTTPS configuración sólo para ciertas operaciones como la compra y de inicio de sesión. ¿Hay alguna configuración de Tomcat que puede ayudar a hacer esto fácilmente?
¿Hay algún cambio de código requeridos para persistir a través de la sesión HTTPS y HTTP?
Solución
En realidad, a ser posible, esto se configura en el archivo web.xml de la aplicación web. Sólo tiene que especificar ciertas direcciones URL que deben ser seguras como <security-constraint><web-resource-collection>
y especificar HTTPS como requisito <transport-guarantee>
con valor de CONFIDENTIAL
. El contenedor gestionará redirige de forma transparente. Simple.
<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>
Otros consejos
Sólo tiene que configurar un conector HTTP y todo el 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 mecanografiadas por el usuario en lo que redirigir al usuario a la página HTTPS si se introduce la URL HTTP.
Si usted está hablando acerca de las sesiones de servlet (JSESSIONID), no debería tener ningún problema de compartir sesiones entre HTTP y HTTPS desde Tomcat no añade "seguro" bandera a las cookies.