Skip to content

Commit 2aa6b52

Browse files
weizhouapachedhslove
authored andcommitted
utils: fix invalid JSESSIONID cookie in https setup (apache#9856)
* utils: fix invalid JSESSIONID cookie in https setup When enable.secure.session.cookie is set to true, use cannot login with error ``` 2024-10-25T09:03:33,898 DEBUG [c.c.u.HttpUtils] (qtp384617262-21:[ctx-a3ee3670]) (logid:7c5bfd8d) jsessionidFromCookie = node017ygldpe44nub1frmqafsj0qmc18 2024-10-25T09:03:33,898 DEBUG [c.c.u.HttpUtils] (qtp384617262-21:[ctx-a3ee3670]) (logid:7c5bfd8d) session.getId() = node017ygldpe44nub1frmqafsj0qmc18 2024-10-25T09:03:33,898 ERROR [c.c.u.HttpUtils] (qtp384617262-21:[ctx-a3ee3670]) (logid:7c5bfd8d) JSESSIONID from cookie is invalid. ``` * pr9856 option 2: check only if jsessionid is not null
1 parent 2b19317 commit 2aa6b52

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

utils/src/main/java/com/cloud/utils/HttpUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ public static boolean validateSessionKey(final HttpSession session, final Map<St
117117
return false;
118118
}
119119
final String jsessionidFromCookie = HttpUtils.findCookie(cookies, "JSESSIONID");
120-
if (jsessionidFromCookie == null
121-
|| !(jsessionidFromCookie.startsWith(session.getId() + '.'))) {
120+
if (jsessionidFromCookie != null
121+
&& !(jsessionidFromCookie.equals(session.getId()) || jsessionidFromCookie.startsWith(session.getId() + '.'))) {
122122
LOGGER.error("JSESSIONID from cookie is invalid.");
123123
return false;
124124
}

utils/src/test/java/com/cloud/utils/HttpUtilsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void validateSessionKeyTest() {
7474
params = null;
7575
cookies = new Cookie[]{new Cookie(sessionKeyString, sessionKeyValue)};
7676
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, "randomString", HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
77-
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
77+
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
7878

7979
// param null, cookies not null test (JSESSIONID is not null and matches)
8080
cookies = new Cookie[2];
@@ -95,7 +95,7 @@ public void validateSessionKeyTest() {
9595
cookies = null;
9696
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
9797
params.put(sessionKeyString, new String[]{sessionKeyValue});
98-
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
98+
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
9999

100100
// both param and cookies not null test (JSESSIONID is null)
101101
params = new HashMap<String, Object[]>();
@@ -104,7 +104,7 @@ public void validateSessionKeyTest() {
104104
params.put(sessionKeyString, new String[]{"incorrectValue"});
105105
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
106106
params.put(sessionKeyString, new String[]{sessionKeyValue});
107-
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
107+
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
108108

109109
// both param and cookies not null test (JSESSIONID is not null but mismatches)
110110
params = new HashMap<String, Object[]>();

0 commit comments

Comments
 (0)