Skip to content

Commit d80c20d

Browse files
committed
Move server.name validation before �uthenticateRequest.
1 parent dc15a82 commit d80c20d

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

‎src/main/java/org/tinystruct/system/TomcatServer.java‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,26 @@ public void service(HttpServletRequest request, HttpServletResponse response) th
342342
Request<HttpServletRequest, ServletInputStream> _request = new RequestBuilder(request, isSSL());
343343
Response<HttpServletResponse, ServletOutputStream> _response = new ResponseBuilder(response);
344344

345+
// Enforce server name restriction if configured
346+
String configuredServerName = settings.get("server.name");
347+
if (configuredServerName != null && !configuredServerName.trim().isEmpty()) {
348+
String hostHeader = request.getHeader("Host");
349+
boolean hostAllowed = false;
350+
if (hostHeader != null) {
351+
for (String allowed : configuredServerName.split(",")) {
352+
if (hostHeader.equalsIgnoreCase(allowed.trim())) {
353+
hostAllowed = true;
354+
break;
355+
}
356+
}
357+
}
358+
if (!hostAllowed) {
359+
logger.warning("Rejected request: Host header '" + hostHeader + "' does not match any configured server.name '" + configuredServerName.trim() + "'");
360+
sendErrorResponse(request, response, 400, "Bad Request: Invalid server name.");
361+
return;
362+
}
363+
}
364+
345365
// Authenticate request
346366
if (!authenticateRequest(_request, context)) {
347367
sendErrorResponse(request, response, 401, "Invalid or expired token.");
@@ -424,26 +444,6 @@ public void service(HttpServletRequest request, HttpServletResponse response) th
424444
return;
425445
}
426446

427-
// Enforce server name restriction if configured
428-
String configuredServerName = settings.get("server.name");
429-
if (configuredServerName != null && !configuredServerName.trim().isEmpty()) {
430-
String hostHeader = request.getHeader("Host");
431-
boolean hostAllowed = false;
432-
if (hostHeader != null) {
433-
for (String allowed : configuredServerName.split(",")) {
434-
if (hostHeader.equalsIgnoreCase(allowed.trim())) {
435-
hostAllowed = true;
436-
break;
437-
}
438-
}
439-
}
440-
if (!hostAllowed) {
441-
logger.warning("Rejected request: Host header '" + hostHeader + "' does not match any configured server.name '" + configuredServerName.trim() + "'");
442-
sendErrorResponse(request, response, 400, "Bad Request: Invalid server name.");
443-
return;
444-
}
445-
}
446-
447447
if (isSSE(request)) {
448448
handleSSE(context, _request, _response);
449449
return;

0 commit comments

Comments
 (0)