comparison http/src/luan/modules/web/AuthenticationHandler.java @ 493:1d082a0812e0

move web to http
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 15 May 2015 17:29:59 -0600
parents web/src/luan/modules/web/AuthenticationHandler.java@e132b7a3d94c
children
comparison
equal deleted inserted replaced
492:b36cc406d3d2 493:1d082a0812e0
1 package luan.modules.web;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8 import org.eclipse.jetty.server.Request;
9 import org.eclipse.jetty.server.handler.AbstractHandler;
10 import org.eclipse.jetty.util.B64Code;
11
12
13 public class AuthenticationHandler extends AbstractHandler {
14 private final String path;
15 private String password = "password";
16
17 public AuthenticationHandler(String path) {
18 this.path = path;
19 }
20
21 public void setPassword(String password) {
22 this.password = password;
23 }
24
25 public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
26 throws IOException
27 {
28 if( !target.startsWith(path) )
29 return;
30 String pwd = getPassword(request);
31 if( password.equals(pwd) )
32 return;
33 response.setHeader("WWW-Authenticate","Basic realm=\""+path+"\"");
34 response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
35 baseRequest.setHandled(true);
36 }
37
38 private static String getPassword(HttpServletRequest request) {
39 String auth = request.getHeader("Authorization");
40 if( auth==null )
41 return null;
42 String[] a = auth.split(" +");
43 if( a.length != 2 )
44 throw new RuntimeException("auth = "+auth);
45 if( !a[0].equals("Basic") )
46 throw new RuntimeException("auth = "+auth);
47 auth = new String(B64Code.decode(a[1]));
48 a = auth.split(":");
49 if( a.length != 2 )
50 throw new RuntimeException("auth = "+auth);
51 return a[1];
52 }
53 }