@@ -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