WebSphere 6.1 Jaas Logout
Pergunta
Eu tenho uma aplicação da web em 6.1 usando o JAAS que já está funcionando. Autentica e autoriza de maneira ordenada. Mas minha página de logout não está desativando o diretor. Este aplicativo funciona corretamente no JBoss e no Glasfish, mas não em.
Minha página de logout é apenas um JSP simples com este conteúdo.
<%System.out.println("principal is not null:"+(null != request.getUserPrincipal()));
if (null != request.getSession(false))
request.getSession(false).invalidate();
%><jsp:include page="/index.html" />
Estou esquecendo de algo? Eu preferia não usar nenhuma API específica da WebPShere, mas se for absolutamente necessário, eu o farei.
Solução
Para fazer logout com sucesso, esse snippet de código também é necessário:
try {
com.ibm.websphere.security.WSSecurityHelper.revokeSSOCookies(request, response);
} catch(Exception e) {
// catch all possible exceptions if you want or handle them separately
out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
throw new ServletException(e);
}
Outras dicas
A IBM também implementa um formulário chamado IBM_Security_Logout. Eu o uso no WebSphere 7.0, mas existe na versão anterior. Você pode encontrar mais detalhes minha resposta para minha pergunta:
Como faço para fazer o logout do Java EE Container Gerencied Security?
No WebSphere 8.5.5 (talvez em versões mais antigas), você também pode definir uma propriedade personalizada.
Segurança -> Segurança Global -> Propriedades personalizadas
com.ibm.ws.security.web.logoutOnHTTPSessionExpire=true