2010-11-23 6 views
2

Je suis en train d'apporter des modifications à une application Web existante qui utilise Struts et se déploie sur Tomcat. J'essayais de faire rediriger ma demande de HTTP vers HTTPS lorsque l'utilisateur visitait une page en particulier. Pour ce faire, j'ai ajouté à mon web.xml:Tomcat: problème lié à la redirection de HTTP vers HTTPS

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>secured page</web-resource-name> 
    <url-pattern>/secured.do</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

et à mon server.xml:

<Connector port="8443" 
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
enableLookups="true" disableUploadTimeout="true" 
acceptCount="100" debug="0" scheme="https" secure="true" 
clientAuth="false" sslProtocol="TLS" 
keystoreFile=".keystore" 
keystorePass="password" /> 

et cela a fonctionné. Le problème était qu'une fois que l'utilisateur était redirigé vers HTTPS, il ne revenait pas à HTTP même lorsqu'il visitait une autre page normale. Ma question est la suivante: ce comportement est-il normal et les configurations mentionnées plus tôt sont-elles censées le faire? Ou y a-t-il quelque chose en rapport avec l'application qui cause ce comportement? Merci

Répondre

2

Oui, c'est le comportement normal sur Tomcat. Une fois qu'il se déplace dans https, il ne redirigera pas d'autres URL dans http, à moins que l'URL ne soit explicitement pour http.

Vous pouvez essayer d'ajouter ceci au bloc de modèle d'URL non sécurisé dans web.xml, mais cela ne redirigera pas automatiquement vers http après un https.

<user-data-constraint> 
<transport-guarantee>NONE</transport-guarantee> 
</user-data-constraint> 

Si vous avez vraiment besoin de, vous devez écrire un Filter pour vérifier si l'URL ne fait pas partie du motif sécurisé, puis rediriger vers http.

+0

Merci, c'était la solution. J'ai écrit un filtre qui envoie des redirections lorsqu'il rencontre des requêtes https. Cependant, j'ai remarqué que cela ne fonctionnera pas pour les requêtes POST. Quoi qu'il en soit, merci pour la réponse. –

Questions connexes