как обойти аутентификацию LDAP после входа в систему с помощью openid? - PullRequest
0 голосов
/ 08 марта 2011

У меня есть веб-приложение, которое использует LDAP для входа в систему.

Я использую Openid4Java , чтобы позволить пользователям входить в систему с открытым идентификатором, и это прекрасно работает, но когда я хочу сделать перенаправление на мою страницу index.jsp, она перенаправляет меня обратно на страницу входа, потому что я не аутентифицирован с использованием LDAP .

Я создал метод аутентификации для демо-пользователя с LDAP, но вопрос в том, как «сообщить» HttpResponse из открытого идентификатора, что я также вошел в систему с LDAP?

Это метод doGet сервлета, который заботится об аутентификации OpenId. Кроме того, вы заметите, что я делаю аутентификацию LDAP. перед перенаправлением (единственная проблема заключается в том, что для openId я использую свою учетную запись gmail, а для LDAP - демо-счет, и я не знаю, как обрабатывать ответ ...)

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    System.out.println("--------GET----------------");
    System.out.println("context: " + context);
    Identifier identifier = this.verifyResponse(req);
    System.out.println("identifier: " + identifier);
    if (identifier == null) {
        this.getServletContext().getRequestDispatcher("/login_new.jsp")
                .forward(req, resp);
    } else {
        req.setAttribute("identifier", identifier.getIdentifier());
        final String applicationUrl = req.getRequestURL().toString();
        final String redirectTo = applicationUrl.substring(0,
                applicationUrl.indexOf("/servlet")) + "/" + "index.jsp";
        System.out.println("Login through open id succeded, redirect to: "
                + redirectTo);

        if (authenticateUserInJbossLDAP())
            resp.sendRedirect(redirectTo);
    }
}

У вас есть какой-нибудь совет?

Спасибо.

1 Ответ

0 голосов
/ 19 апреля 2011

Наконец-то решена проблема.

Ключевым моментом является аутентификация веб-контейнера с помощью сервлета.Для этой цели можно использовать новый класс с именем «org.jboss.web.tomcat.security.login. WebAuthentication ».

Таким образом, окончательный уточненный метод будет:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        log.debug("------------------------");
        log.debug("context: " + context);
        Identifier identifier = this.verifyResponse(req);
        log.debug("identifier: " + identifier);
        // if openid login succeded redirect to home page using our demo account
        if (identifier != null) {
            WebAuthentication pwl = new WebAuthentication();
            pwl.login("guest", "guest");**
            resp.sendRedirect("/index.jsp");
        } else {
            System.out.println("login with openid failed");
        }
    }

Полное решение openid, которое я записал здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...