Skip to content

Commit b2f0e4c

Browse files
authored
Merge pull request #1654 from gentics/hotfix-2.1.x-sup-14730
Make JWT Cookie http only
2 parents ee7e836 + c2cd17a commit b2f0e4c

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Auth: The JWT auth cookie will now have the `HTTPOnly` flag set.

common/src/main/java/com/gentics/mesh/auth/handler/MeshJWTAuthHandler.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,11 @@ private void handleJWTAuth(RoutingContext context, boolean ignoreDecodeErrors) {
149149
if (!result.isUsingAPIKey()) {
150150
String jwtToken = authProvider.generateToken(authenticatedUser);
151151
// Remove the original cookie and set the new one
152-
context.removeCookie(SharedKeys.TOKEN_COOKIE_KEY);
153-
context.addCookie(Cookie.cookie(SharedKeys.TOKEN_COOKIE_KEY, jwtToken)
154-
.setMaxAge(meshOptions.getAuthenticationOptions().getTokenExpirationTime()).setPath("/"));
152+
context.response().removeCookie(SharedKeys.TOKEN_COOKIE_KEY);
153+
context.response().addCookie(Cookie.cookie(SharedKeys.TOKEN_COOKIE_KEY, jwtToken)
154+
.setHttpOnly(true)
155+
.setMaxAge(meshOptions.getAuthenticationOptions().getTokenExpirationTime())
156+
.setPath("/"));
155157
}
156158
context.next();
157159
} else {

common/src/main/java/com/gentics/mesh/auth/provider/MeshJWTAuthProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,9 @@ private User loadUserByJWT(JsonObject jwt) throws Exception {
297297
public void login(InternalActionContext ac, String username, String password, String newPassword) {
298298
String token = generateToken(username, password, newPassword);
299299
ac.addCookie(Cookie.cookie(SharedKeys.TOKEN_COOKIE_KEY, token)
300-
.setMaxAge(meshOptions.getAuthenticationOptions().getTokenExpirationTime()).setPath("/"));
300+
.setHttpOnly(true)
301+
.setMaxAge(meshOptions.getAuthenticationOptions().getTokenExpirationTime())
302+
.setPath("/"));
301303
ac.send(new TokenResponse(token).toJson(ac.isMinify(meshOptions.getHttpServerOptions())));
302304
}
303305

tests/tests-core/src/main/java/com/gentics/mesh/core/user/AuthenticationEndpointTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ public void testBasicAuth() throws IOException {
214214
.build()).execute();
215215
JsonObject responseBody = new JsonObject(response.body().string());
216216
assertThat(responseBody.getString("username")).isEqualTo("admin");
217+
assertThat(response.header("set-cookie")).contains("HTTPOnly");
217218
}
218219

219220
private String base64(String input) {

0 commit comments

Comments
 (0)