annotate src/luan/modules/http/AuthenticationHandler.java @ 1000:32d4b569567c

simplify handle()
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 19 Oct 2016 04:22:51 -0600
parents b3176fd168bf
children 0d884377e923
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
494
2b9bc97f0439 change luan:web to luan:http
Franklin Schmidt <fschmidt@gmail.com>
parents: 493
diff changeset
1 package luan.modules.http;
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
2
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
3 import java.io.IOException;
808
b3176fd168bf replace use of jetty.util.B64Code with java.util.Base64
Franklin Schmidt <fschmidt@gmail.com>
parents: 800
diff changeset
4 import java.util.Base64;
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
5 import javax.servlet.http.HttpServletResponse;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
6 import org.eclipse.jetty.server.Request;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
7 import org.eclipse.jetty.server.handler.AbstractHandler;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
8
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
9
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
10 public class AuthenticationHandler extends AbstractHandler {
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11 private final String path;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
12 private String password = "password";
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
13
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
14 public AuthenticationHandler(String path) {
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
15 this.path = path;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
16 }
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
17
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
18 public void setPassword(String password) {
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
19 this.password = password;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20 }
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
21
1000
32d4b569567c simplify handle()
Franklin Schmidt <fschmidt@gmail.com>
parents: 808
diff changeset
22 @Override
32d4b569567c simplify handle()
Franklin Schmidt <fschmidt@gmail.com>
parents: 808
diff changeset
23 public void handle(String target,Request request,HttpServletResponse response)
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
24 throws IOException
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
25 {
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
26 if( !target.startsWith(path) )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
27 return;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
28 String pwd = getPassword(request);
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
29 if( password.equals(pwd) )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
30 return;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
31 response.setHeader("WWW-Authenticate","Basic realm=\""+path+"\"");
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
32 response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
1000
32d4b569567c simplify handle()
Franklin Schmidt <fschmidt@gmail.com>
parents: 808
diff changeset
33 request.setHandled(true);
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
34 }
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
35
1000
32d4b569567c simplify handle()
Franklin Schmidt <fschmidt@gmail.com>
parents: 808
diff changeset
36 private static String getPassword(Request request) {
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
37 String auth = request.getHeader("Authorization");
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
38 if( auth==null )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
39 return null;
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
40 String[] a = auth.split(" +");
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
41 if( a.length != 2 )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
42 throw new RuntimeException("auth = "+auth);
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
43 if( !a[0].equals("Basic") )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
44 throw new RuntimeException("auth = "+auth);
808
b3176fd168bf replace use of jetty.util.B64Code with java.util.Base64
Franklin Schmidt <fschmidt@gmail.com>
parents: 800
diff changeset
45 auth = new String(Base64.getDecoder().decode(a[1]));
188
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
46 a = auth.split(":");
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
47 if( a.length != 2 )
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
48 throw new RuntimeException("auth = "+auth);
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
49 return a[1];
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
50 }
e132b7a3d94c add AuthenticationHandler
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
51 }