2009-08-25 8 views
7

Ho una webapp basata su servlet in esecuzione sul server Tomcat 6. Lo schema URL è HTTPS. L'intero sito è attualmente servito su HTTPS. Ma quello che mi piacerebbe davvero fare è impostare HTTPS solo per alcune operazioni come l'acquisto e il login. C'è qualche configurazione in Tomcat che può aiutarmi a farlo facilmente?Utilizzare HTTPS solo per determinate pagine nella webapp basata su servlet

Sono presenti modifiche al codice richieste per mantenere la sessione su HTTPS e HTTP?

risposta

11

In realtà, idealmente, questo è configurato nel file web.xml dell'app Web. Basta specificare determinati URL che devono essere protetti come <security-constraint><web-resource-collection> e specificare il requisito HTTPS come <transport-guarantee> con il valore di CONFIDENTIAL. Il contenitore gestirà i reindirizzamenti in modo trasparente. Semplice.

<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

Grazie per le informazioni, ci proverò! – Keshav

+0

Ho provato ad aggiungere questo al mio web.xml, ma Tomcat non reindirizza, fallisce! Sto facendo qualcosa di sbagliato? Sto usando Tomcat 5.5.23. – ep4169

+0

Ho provato questo nel web.xml della mia app, ma Tomcat non reindirizza; non riesce a caricare nulla. Sto facendo qualcosa di sbagliato? – ep4169

2

Hai solo bisogno di configurare un connettore HTTP e tutto il tuo servlet sarà disponibile anche su HTTP.

Per le operazioni che richiedono HTTPS, è necessario far rispettare da soli come questo,

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

Nel nostro caso, l'URL di accesso possono essere digitati dall'utente in modo da reindirizzare l'utente alla pagina HTTPS se URL HTTP è entrato.

Se si parla di sessioni Servlet (JSESSIONID), non si dovrebbero avere problemi a condividere sessioni tra HTTP e HTTPS poiché Tomcat non aggiunge flag "sicuro" ai cookie.