【问题标题】:How to change Jsession ID after Authenticating in Tomcat?如何在Tomcat中进行身份验证后更改Jsessionid?
【发布时间】:2018-07-12 19:16:12
【问题描述】:

我们使用的是 Tomcat 9.0.7,我们需要在验证用户身份后更改 Jsession-ID。

有什么方法可以实现吗?

【问题讨论】:

    标签: java tomcat9


    【解决方案1】:

    不仅有方法可以做到这一点,而且出于安全原因,这实际上是推荐的做法。

    在这里,您会发现一个开源应用程序的片段,该应用程序将此功能称为“网络钓鱼防护”

    来自liferay:https://github.com/liferay/liferay-portal/blob/d9883da1a7df9de7b72d9aa8984e20693ab8112d/portal-impl/src/com/liferay/portal/security/auth/session/AuthenticatedSessionManagerImpl.java

    public HttpSession renewSession(
            HttpServletRequest request, HttpSession session)
        throws Exception {
    
        // Invalidate the previous session to prevent session fixation attacks
    
        String[] protectedAttributeNames =
            PropsValues.SESSION_PHISHING_PROTECTED_ATTRIBUTES;
    
        Map<String, Object> protectedAttributes = new HashMap<>();
    
        for (String protectedAttributeName : protectedAttributeNames) {
            Object protectedAttributeValue = session.getAttribute(
                protectedAttributeName);
    
            if (protectedAttributeValue == null) {
                continue;
            }
    
            protectedAttributes.put(
                protectedAttributeName, protectedAttributeValue);
        }
    
        session.invalidate();
    
        session = request.getSession(true);
    
        for (String protectedAttributeName : protectedAttributeNames) {
            Object protectedAttributeValue = protectedAttributes.get(
                protectedAttributeName);
    
            if (protectedAttributeValue == null) {
                continue;
            }
    
            session.setAttribute(
                protectedAttributeName, protectedAttributeValue);
        }
    
        return session;
    }
    
    • 此处的“受保护”属性用作将相关属性复制到新会话中的一种方式,否则它们将丢失。

    【讨论】:

    • 我们需要在T​​omcat Config文件中的某处添加上述程序吗?
    • 这通常是由 tomcat 提供的应用程序源的一部分。你可以访问源代码吗?所以,不是配置,而是源。
    • @Victor-您能否详细介绍一下,我在 tomcat 目录中没有看到任何源文件...问题是我们在 Tomcat 上运行了一个 java 应用程序,并且想在之后更改 jsessionID用户成功登录应用程序。
    • 源代码是您的 java 应用程序之一。这应该直接应用在此应用程序的源代码中,即 webapps 内部的那个
    猜你喜欢
    • 2018-09-15
    • 2012-09-28
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多