Basic-Authentifizierung mit eingebetteten Jetty-7-server und keine web.xml Datei
Habe ich eine embedded Implementierung von Jetty 7 als Dienst ausgeführt wird, und hinzufügen möchten, basic-Authentifizierung ohne web.xml Datei ein servlet.
Habe ich meine Anmeldeinformationen mithilfe der beschriebenen Schritte hier
Ich dachte, ich könnte den server erstellen, erstellen Sie eine Sicherheits-handler mit basic-Authentifizierung und fügen Sie eine HashLoginService der security manager. Aber ich bin klar fehlen einige Dinge, da bin ich nie, immer Eingabeaufforderung für Anmeldeinformationen.
Unten ist der code. Jegliche Hilfe würde sehr geschätzt werden.
server = new Server(port);
server.addConnector(getSslChannelConnector(securePort));
server.setGracefulShutdown(1000);
server.setStopAtShutdown(true);
//create the context handler for the server
ServletContextHandler sch = new ServletContextHandler(server, WEBAPP_CONTEXT);
//attach the security handler to it that has basic authentication
sch.setSecurityHandler(getSecurityHandler());
//define the processing servlet.
sch.addServlet(new ServletHolder(new ProcessingServlet()), "/process");
.
.
private SecurityHandler getSecurityHandler() {
//add authentication
Constraint constraint = new Constraint(Constraint.__BASIC_AUTH,"user");
constraint.setAuthenticate(true);
constraint.setRoles(new String[]{"user","admin"});
//map the security constraint to the root path.
ConstraintMapping cm = new ConstraintMapping();
cm.setConstraint(constraint);
cm.setPathSpec("/*");
//create the security handler, set the authentication to Basic
//and assign the realm.
ConstraintSecurityHandler csh = new ConstraintSecurityHandler();
csh.setAuthenticator(new BasicAuthenticator());
csh.setRealmName(REALM);
csh.addConstraintMapping(cm);
//set the login service
csh.setLoginService(getHashLoginService());
return csh;
}
private HashLoginService getHashLoginService() {
//create the login service, assign the realm and read the user credentials
//from the file /tmp/realm.properties.
HashLoginService hls = new HashLoginService();
hls.setName(REALM);
hls.setConfig("/tmp/realm.properties");
hls.setRefreshInterval(0);
return hls;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese arbeiten und veröffentlicht ein Beispiel webapp hier
Der code sieht grob ok.
Mein interface ist etwas anders für das hinzufügen der ConstraintMapping als die Einzel-CM hinzufügen, scheint gegangen in meiner version von jetty 7.
Bar, dass mein code ist prinzipiell identisch und funktioniert für mich.
Beachten Sie, dass nach der Authentifizierung Ihres Browsers wird nicht wieder aufgefordert, es sei denn, Sie starten Sie Ihren browser neu oder Folgen Sie den Anweisungen hier