Do Basic authentication using JDK HTTP server Tag(s): Networking
Since Java 1.6, there's a built-in HTTP server included with the JDK.
This example is using hard-coded credentials. In real life,you can query an LDAP server or use JNA to authenticate and authorize.
import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import com.sun.net.httpserver.BasicAuthenticator; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; public class SimpleHttpServer3 { public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0); server.createContext("/info", new InfoHandler()); HttpContext hc1 = server.createContext("/get", new GetHandler()); hc1.setAuthenticator(new BasicAuthenticator("get") { @Override public boolean checkCredentials(String user, String pwd) { return user.equals("admin") && pwd.equals("password"); } }); server.setExecutor(null); // creates a default executor server.start(); System.out.println("The server is running"); } // http://localhost:8000/info static class InfoHandler implements HttpHandler { public void handle(HttpExchange httpExchange) throws IOException { String response = "Use /get to authenticate (user:admin pwd:password)"; SimpleHttpServer3.writeResponse(httpExchange, response.toString()); } } static class GetHandler implements HttpHandler { public void handle(HttpExchange httpExchange) throws IOException { StringBuilder response = new StringBuilder(); response.append("<html><body>"); response.append("hello " + httpExchange.getPrincipal().getUsername()); response.append("</body></html>"); SimpleHttpServer3.writeResponse(httpExchange, response.toString()); } } public static void writeResponse(HttpExchange httpExchange, String response) throws IOException { httpExchange.sendResponseHeaders(200, response.length()); OutputStream os = httpExchange.getResponseBody(); os.write(response.getBytes()); os.close(); } }
See these related HowTo :
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com