Mercurial Hosting > luan
view src/luan/modules/http/jetty/AuthenticationHandler.java @ 1136:d30d400fd43d
add http/jetty
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 29 Jan 2018 17:50:49 -0700 |
parents | src/luan/modules/http/AuthenticationHandler.java@0d884377e923 |
children |
line wrap: on
line source
package luan.modules.http.jetty; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.util.B64Code; public class AuthenticationHandler extends AbstractHandler { private final String path; private String password = "password"; public AuthenticationHandler(String path) { this.path = path; } public void setPassword(String password) { this.password = password; } public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException { if( !target.startsWith(path) ) return; String pwd = getPassword(request); if( password.equals(pwd) ) return; response.setHeader("WWW-Authenticate","Basic realm=\""+path+"\""); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); baseRequest.setHandled(true); } private static String getPassword(HttpServletRequest request) { String auth = request.getHeader("Authorization"); if( auth==null ) return null; String[] a = auth.split(" +"); if( a.length != 2 ) throw new RuntimeException("auth = "+auth); if( !a[0].equals("Basic") ) throw new RuntimeException("auth = "+auth); auth = new String(B64Code.decode(a[1])); a = auth.split(":"); if( a.length != 2 ) throw new RuntimeException("auth = "+auth); return a[1]; } }