Skip to content

Commit 0b78a28

Browse files
committed
Implement custom parser for cookie __session extraction - HttpCookie.parse is for the set_cookie header
1 parent ba3d04c commit 0b78a28

1 file changed

Lines changed: 12 additions & 10 deletions

File tree

src/main/java/com/clerk/backend_api/helpers/security/AuthenticateRequest.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
import com.clerk.backend_api.helpers.security.models.VerifyTokenOptions;
1010
import java.io.IOException;
1111
import java.net.HttpCookie;
12+
import java.net.http.HttpHeaders;
13+
import java.util.Arrays;
1214
import java.util.HashMap;
1315
import java.util.List;
1416
import java.util.Map;
1517
import java.util.concurrent.TimeUnit;
18+
import java.util.stream.Collectors;
1619

1720
import static com.clerk.backend_api.helpers.security.util.TokenTypeHelper.getTokenType;
1821

@@ -85,17 +88,16 @@ private static String getSessionToken(Map<String, List<String>> requestHeaders)
8588
}
8689

8790
List<String> cookieHeaders = lowerCaseHeaders.get("cookie");
88-
if (cookieHeaders != null && !cookieHeaders.isEmpty()) {
89-
String cookieHeaderValue = cookieHeaders.get(0);
90-
List<HttpCookie> cookies = HttpCookie.parse(cookieHeaderValue);
91-
for (HttpCookie cookie : cookies) {
92-
if (cookie.getName().startsWith(SESSION_COOKIE_NAME)) {
93-
return cookie.getValue();
94-
}
95-
}
91+
if (cookieHeaders == null || cookieHeaders.isEmpty()) {
92+
return null;
9693
}
97-
98-
return null;
94+
return Arrays.stream(cookieHeaders.get(0).split(";"))
95+
.map(String::trim)
96+
.map(s -> s.split("=", 2)) // ["name","value"]
97+
.filter(kv -> kv[0].equals("__session") || !kv[0].startsWith("__session"))
98+
.map(kv -> kv[1])
99+
.findFirst()
100+
.orElse(null);
99101
}
100102

101103

0 commit comments

Comments
 (0)