authentication - 是否可以从 servlet 过滤器中删除 SSL session ?

标签 authentication ssl servlet-filters

我正在 servlet 过滤器中实现证书身份验证。我使用 httpRequest.getAttribute("javax.servlet.request.X509Certificate") API 获取客户端证书。当用户启动浏览器并首次访问 Web 服务器时,底层 SSL 会请求客户端证书,浏览器会提示选择证书。但是,在用户注销并且我已经使 HTTP session 无效后,如果用户没有关闭浏览器并返回到 Web 服务器,则底层 SSL 不会触发浏览器再次提示选择证书。我假设这是因为在用户从 HTTP 层的 Web 服务器注销后,SSL session 没有被拆除。我的问题是有没有办法使来自 servlet 的底层 SSL session 失效?一个更普遍的问题,如何让浏览器在用户从 Web 服务器注销后重新提示选择证书?

谢谢, 帮派

最佳答案

My question is that is there a way to invalidate the underlying SSL session from the servlet?

您将不得不编写一个 Tomcat Valve,并且可能还需要更改一些 Tomcat 源代码。我深入了解了 Tomcat HTTPS/身份验证源代码的多个层次,但我还没有看到可以为您提供 SSLSession 的 Hook 。

A more general question, how can I get the browser to re-prompt for the cert selection after the user logs out from Web server?

使 SSL session 无效(如果可以的话)可能会也可能不会产生那种效果。我认为这将是特定于浏览器的。

关于authentication - 是否可以从 servlet 过滤器中删除 SSL session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950171/

相关文章:

django - ObjectDoesNotExist 未捕获DoesNotExist 异常

Python HTTPS/SSL 错误 :1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

java - 需要根据 Servlet 响应有条件地设置 HTTP header

selenium - 如何在 Firefox 中从 Katalon Studio 启动 Web 应用程序时自动进行身份验证

c# - ASP.NET 登录状态 : logout not working

ssl - 如何在 nginx 中设置 websocket 代理和 cors?

java - Hibernate sessionfactory 一段时间后抛出空指针异常

java - 未在 App Engine 上调用 Servlet 过滤器

javascript - 离线网络应用程序中的用户身份验证

Java - PKIX 路径构建失败 : unable to find valid certification path to requested target