Sair de sessão https

4 respostas
F

Olá, estou usando Tomcat implementando SSL no meu site.
Funcionando perfeitamente acesso ao https. Porém, depois de entrar em uma sessão https, não consigo fazer sair dela quando acessar uma outra página (página geral que não necessita de criptografia por exemplo)

Defini a configurração de portas no server.xml
<Connector port=“80” protocol=“HTTP/1.1”
maxThreads=“150” connectionTimeout=“20000”
redirectPort=“443” />

<Connector port=“443” protocol=“HTTP/1.1” SSLEnabled=“true”
maxThreads=“150” scheme=“https” secure=“true”
keystoreFile=“c:\key.jks” keystorePass=“changeit”
clientAuth=“false” sslProtocol=“TLS” />

E no web.xml os endereços que deverão usar https:
<security-constraint>
<web-resource-collection>
<web-resource-name>Home</web-resource-name>
<description>Acesso so via HTTPS</description>
<url-pattern>/site/cadastro/</url-pattern>
<url-pattern>/site/compra/
</url-pattern>
<url-pattern>/site/siteLogin.jsp</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<user-data-constraint>
<description>Usar SSL</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

Já tentei informar endereços para <transport-guarantee> = NONE, mas nada até agora funcionou.
Uma vez entrando em https, não sai mais. (exceto digitando endereço manualmente no browser, é claro (hehe)).

Alguém sabe alguma dica de como resolver isto?
Já consultei vários manuais de referência, mas todos apenas trazem de como acesar https (e isto está funcionando), e não de como sair dele.

Obrigado.

4 Respostas

Aldrin_Leal

Fazer um response.redirect com um session.invalidate() antes?

F

Valeu pela dica.
Mas já tentei isto: apesar de invalidar a sessão continua usando ssl (acessando na porta 443).

Já pensei tentar configurar um redirecionamento de porta para determinadas páginas, mas não consegui fazer isto.

S

Fiquei um dia inteiro tentando fazer isso e consegui assim:

primeiro: Session.invalidate(); //acaba com a sessao aberta.

depois: String host = request.getHeader(“host”); //retorna o host atual com a porta. exe:(localhost:8443)

após: host = host.substring(0, host.indexOf(":")); // isso retira os dois pontos e o nome da porta

finalmente: response.sendRedirect(“http://” + host + “/sua aplicação”);

Como funciona:

O que faz ser redireciona para o https ou http é a porta, (8433 ou 433 para https, 8080 ou 80 para http). Retirando o numero da porta a url é direcinada para porta 80 por default. O truque da string serve para pegar o seu host em tempo de execução para não ter que escrever em hard-code.

Obs.: se você estiver usando a porta 8080 você terá que adicioná-la( host = host + “:8080”)

Espero ter ajudado.

F

Muito obrigado sh@dow!!!
Assim funcionou.
Valeu!!!

Criado 18 de janeiro de 2008
Ultima resposta 19 de fev. de 2009
Respostas 4
Participantes 3