Pergunta

Eu tenho um webapp baseado servlet em execução no servidor Tomcat 6. O esquema de URL é HTTPS. Todo o site está sendo servido em HTTPS. Mas o que eu realmente gostaria de fazer é configurar HTTPS apenas para determinadas operações como compra e login. Existe alguma configuração no Tomcat que pode me ajudar a fazer isso facilmente?

Há algum código mudanças necessárias para persistir sessão em HTTPS e HTTP?

Foi útil?

Solução

Realmente, idealmente, este é configurado no arquivo web.xml do aplicativo web. Basta especificar certas URLs que deve ser seguro como <security-constraint><web-resource-collection> e especificar HTTPS exigência como <transport-guarantee> com valor de CONFIDENTIAL. O recipiente irá gerenciar redirecionamentos de forma transparente. Simples.

<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>

Outras dicas

Você só precisa configurar um HTTP conector e todo o seu servlet estará disponível em HTTP também.

Para operações que requerem HTTPS, é necessário reforçar este mesmo assim,

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

No nosso caso, o URL de login podem ser digitadas pelo usuário para que redirecionar o usuário para a página HTTPS se HTTP URL é digitado.

Se você está falando de sessões Servlet (JSESSIONID), você não deve ter quaisquer problemas de compartilhamento de sessões entre HTTP e HTTPS desde Tomcat não adicionar "seguro" bandeira para os cookies.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top