What is empty session path in tomcat?

前端 未结 4 1380
庸人自扰
庸人自扰 2021-02-03 14:14

I have read apache tomcat documentation a day before, and I am so confused about emptySessionPath . Up to my knowledge, if it\'s set to true, the emptySession

相关标签:
4条回答
  • 2021-02-03 14:26

    If emptySessionPath is set to true, it will eliminate the context path from JSESSIONID cookie.It will set a cookie path to /.This attribute can be used for cross application autehentication mechanism.

    0 讨论(0)
  • 2021-02-03 14:27

    Session are, as you probably know, often maintained by a cookie. A cookie has two values that determines whether they should be returned by the browser for a certain request, cookieDomain and cookiePath. The cookiePath must match that of the request.

    A request is made for

     /some/request/for/this.html
    

    Cookie would be returned with cookie path:

     / 
     /some
     /some/request
    

    But not for cookie path:

     /other
    

    By spec, a session is not shared between different web applications, so if you have web application foo.war deployed under /foo, the session cookie path would, by default be set to /foo.

    It seems Connector.emptySessionPath is a protected variable on Connector. I haven't read the code - but I guess it has something to do with Tomcat's single sign on or sharing sessions, where you login to one context and are authenticated in all - in which case the cookie path must be / for the session cookies.

    0 讨论(0)
  • 2021-02-03 14:35

    Just in case, for the web_app version 3.0, the cookie configuration is standarized, so the equivalent to the AJP's emptySessionPath in webapp 3.0 is:

    <session-config>
    <cookie-config>
    <path>/</path>
    <secure>true</secure>
    </cookie-config>
    </session-config>

    0 讨论(0)
  • 2021-02-03 14:36

    The emptySessionPath field just states whether the all cookie should be stored in the root URL path / (if emptySessionPath=true) or not (otherwise).

    This is used by Apache's Connector. See details here (This is for AJP Connector, which is part of the Connnector object).

    What this basically means is:

    If emptySessionPath is enabled in tomcat, the JSESSIONID cookie is written to the root "/" path. This means that whatever webapp you are on will use the same cookie. Each webapp will re-write the cookie's value to hold that webapp's session id, and they are all different.

    When this is enabled and servlets in different webapps are used, requests from the same user to different servlets will end up overwriting the cookie so that when the servlet is again interacted with it will create a new session and loose the session it had already set up.

    If emptySessionPath is not set, there are multiple cookies in the browser, one for each webapp (none at the root), so different webapps are not re-writing each other's cookie as above.

    JSESSIONID is the ID Session for your Webapp. See a full explanation here.

    Update: This information about usage is somewhat outdated - see here for a more up-to-date information on how to set the Session path also for recent tomcat.

    0 讨论(0)
提交回复
热议问题