gpt4 book ai didi

servlets - Jetty是否支持SessionTrackingMode.SSL

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:07 24 4
gpt4 key购买 nike

SessionTrackingMode允许您指定 Servlet session 绑定(bind)到 SSL session 。 Tomcat 支持这个 Tomcat SSL HOW-TO .在 Jetty 中有什么机制可以实现这一点吗?

例如,如果我在我的 Servlet 初始化中执行以下操作;

@WebServlet(urlPatterns ={ "/session_test" })

公共(public)类 SessionTestServlet 扩展 HttpServlet {

private static final SessionTrackingMode[] modeArray = { SessionTrackingMode.SSL };
private static final Set<SessionTrackingMode> SESSION_TRACKING_MODES = new HashSet<>(Arrays.asList(modeArray));

@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
config.getServletContext().setSessionTrackingModes(SESSION_TRACKING_MODES);
}

然后没有创建 session 。

最佳答案

Jetty 似乎不支持 SessionTrackingMode.SSL

刚刚打开了关于它的错误(因为你是第一个正式询问 servlet 规范的这个功能的人)

https://github.com/eclipse/jetty.project/issues/161

很想知道这在未来将如何工作,使用 HTTP/2 时,您不会为每个后续请求建立新的 SSL 连接,它们只会在同一个 ALPN 层内建立隧道。

更新:2014 年 10 月 2 日

为了解决 session ID 劫持,有一个功能 implemented in Jetty 9这将在身份验证后更改 session ID。 Bug-392247

这在防止恶意第 3 方劫持经过身份验证的 session 方面做得很好。 (从登录开始就开始使用 SSL)

现在,了解一些背景知识,在 Jetty 9(又名 Servlet 3.1)之前的 Jetty 版本中,我们将创建一个新的 session 对象并复制旧的 session 数据。这意味着我们还将触发此更改的已注册 session 监听器。

Jetty 9 不再如此,因为新的 Servlet 3.1 引入了一个新方法 HttpServletRequest.changeSessionId() ,用户也可以调用它来强制更改 sessionId,以及 HttpServletRequest.login() ,用户可以调用它以编程方式登录。这还伴随着一个要求,即如果在这两个调用之前存在 session (之前的 session 对象 == 之后的 session 对象),则不会触发任何监听器。这意味着我们只更改 sessionId 而不是对象。

这对 session ID 劫持意味着什么,实际上没有什么意义,但了解这些方法的存在以及使用它们代表什么是很有用的。 :)

关于servlets - Jetty是否支持SessionTrackingMode.SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com