Безопасное перенаправление Java EE между несколькими типами входа - PullRequest
0 голосов
/ 01 июля 2018

Я ввел kerberos sso логин и логин / пароль для моего веб-приложения J2EE.

sso.jsp обрабатывает единый вход и login.jsp обрабатывает имя пользователя / пароль соответственно.

Доступ пользователя www.example.com/index.jsp и в index.jsp Я проверю, является ли настроенный тип входа (в файле конфигурации) SSO или Database, и перенаправит пользователя на соответствующие страницы jsp. .

Но есть проблема безопасности, при которой пользователь может получить доступ к www.example.com/login.jsp, когда я установил тип входа в конфигурацию SSO.

Как запретить пользователю осуществлять доступ к login.jsp и при этом иметь возможность доступа к login.jsp, когда я устанавливаю тип входа в систему Database, что означает аутентификацию по имени пользователя / паролю, и наоборот для SSO.

1 Ответ

0 голосов
/ 01 июля 2018

Почему вы не определяете запрос на login.jsp, проверяете, является ли тип входа sso, а затем перенаправляете на sso.jsp? Это должно быть сделано в фильтре сервлета.

@WebFilter(urlPatterns = "/login.jsp")
public class SecurityFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        final String loginType = request.getParameter("login-type");

        final HttpServletResponse servletResponse = (HttpServletResponse) response;
        if ("sso".equalsIgnoreCase(loginType)) {
            final String redirectUrl = "sso.jsp";
            servletResponse.sendRedirect(redirectUrl);
        } else {
            chain.doFilter(request, response);
        }
    }

}
...