Skip to content

Commit 6b5356e

Browse files
committed
Add hidden-basic-auth endpoint
1 parent a33280a commit 6b5356e

1 file changed

Lines changed: 35 additions & 26 deletions

File tree

src/main/java/org/gaul/httpbin/HttpBinHandler.java

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -198,32 +198,16 @@ public void handle(String target, Request baseRequest,
198198
return;
199199
} else if (uri.startsWith("/basic-auth/")) {
200200
Utils.copy(is, Utils.NULL_OUTPUT_STREAM);
201-
202-
String header = request.getHeader("Authorization");
203-
if (header == null || !header.startsWith("Basic ")) {
204-
servletResponse.setStatus(
205-
HttpServletResponse.SC_UNAUTHORIZED);
206-
baseRequest.setHandled(true);
207-
return;
208-
}
209-
210-
byte[] bytes = Base64.getDecoder().decode(
211-
header.substring("Basic ".length()));
212-
String[] parts = new String(
213-
bytes, StandardCharsets.UTF_8).split(":", 2);
214-
String[] auth = uri.substring("/basic-auth/".length()).split(
215-
"/", 2);
216-
if (auth.length != 2 || !Arrays.equals(auth, parts)) {
217-
servletResponse.setStatus(
218-
HttpServletResponse.SC_UNAUTHORIZED);
219-
baseRequest.setHandled(true);
220-
return;
221-
}
222-
223-
JSONObject response = new JSONObject();
224-
response.put("authenticated", true);
225-
response.put("user", parts[0]);
226-
respondJSON(servletResponse, os, response);
201+
handleBasicAuth(request, servletResponse, os,
202+
uri.substring("/basic-auth/".length()),
203+
HttpServletResponse.SC_UNAUTHORIZED);
204+
baseRequest.setHandled(true);
205+
return;
206+
} else if (uri.startsWith("/hidden-basic-auth/")) {
207+
Utils.copy(is, Utils.NULL_OUTPUT_STREAM);
208+
handleBasicAuth(request, servletResponse, os,
209+
uri.substring("/hidden-basic-auth/".length()),
210+
HttpServletResponse.SC_NOT_FOUND);
227211
baseRequest.setHandled(true);
228212
return;
229213
} else if (uri.equals("/anything")) {
@@ -348,4 +332,29 @@ private static String getFullURL(HttpServletRequest request) {
348332
return requestURL.append('?').append(queryString).toString();
349333
}
350334
}
335+
336+
private static void handleBasicAuth(HttpServletRequest request,
337+
HttpServletResponse servletResponse, OutputStream os,
338+
String suffix, int failureStatus) throws IOException {
339+
String header = request.getHeader("Authorization");
340+
if (header == null || !header.startsWith("Basic ")) {
341+
servletResponse.setStatus(failureStatus);
342+
return;
343+
}
344+
345+
byte[] bytes = Base64.getDecoder().decode(
346+
header.substring("Basic ".length()));
347+
String[] parts = new String(
348+
bytes, StandardCharsets.UTF_8).split(":", 2);
349+
String[] auth = suffix.split("/", 2);
350+
if (auth.length != 2 || !Arrays.equals(auth, parts)) {
351+
servletResponse.setStatus(failureStatus);
352+
return;
353+
}
354+
355+
JSONObject response = new JSONObject();
356+
response.put("authenticated", true);
357+
response.put("user", parts[0]);
358+
respondJSON(servletResponse, os, response);
359+
}
351360
}

0 commit comments

Comments
 (0)