Базовая аутентификация со встроенным сервером Jetty 7 и без файла web.xml

У меня есть встроенная реализация Jetty 7, работающая как служба, и я хочу добавить базовую аутентификацию без файла web.xml для сервлета.

Я создал свои учетные данные, используя шаги, описанные здесь

. Я думал, что могу создать сервер, создать обработчик безопасности с базовой аутентификацией и присоединить HashLoginService к диспетчеру безопасности. Но мне явно не хватает нескольких вещей, потому что я никогда не получаю подсказки для учетных данных.

Ниже приведен код. Любая помощь будет принята с благодарностью.

    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;
}

8
задан onkar 25 December 2012 в 19:08
поделиться