2 votes

Protéger l'application par mot de passe dans jetty

Je teste une application web (.war) fonctionnant avec Jetty 7. A des fins de démonstration, je veux l'exécuter sur une URL publique, mais j'aimerais que le monde entier (s'il tombe sur l'URL) ne puisse pas la voir.

Existe-t-il un moyen de faire en sorte que Jetty exige une authentification de type basic-auth lors de l'accès à l'application web (sans modifier quoi que ce soit à l'intérieur du war, c'est-à-dire sans modifier le fichier web.xml) ? Ou si ce n'est pas l'application web, alors n'importe quelle partie de ce que Jetty fournit au port 8080 ?

1voto

icyrock.com Points 1180

Consultez l'exemple complet ici :

Le lien ci-dessus est un lien d'archive Web, le lien original n'est plus disponible :

Exemple de configuration programmatique à partir de ce qui précède :

import org.mortbay.jetty.security.*;

Server server = new Server();

Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});

Constraint constraint = new Constraint();
constraint.setName(Constraint.__BASIC_AUTH);;
constraint.setRoles(new String[]{"user","admin","moderator"});
constraint.setAuthenticate(true);

ConstraintMapping cm = new ConstraintMapping();
cm.setConstraint(constraint);
cm.setPathSpec("/*");

SecurityHandler sh = new SecurityHandler();
sh.setUserRealm(new HashUserRealm("MyRealm",System.getProperty("jetty.home")+"/etc/realm.properties"));
sh.setConstraintMappings(new ConstraintMapping[]{cm});

WebAppContext webappcontext = new WebAppContext();
webappcontext.setContextPath("/mywebapp");
webappcontext.setWar("./path/to/my/war/orExplodedwar");
webappcontext.addHandler(sh);

HandlerCollection handlers= new HandlerCollection();
handlers.setHandlers(new Handler[]{webappcontext, new DefaultHandler()});

server.setHandler(handlers);
server.start();
server.join();

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X