Технология AngularJs и Java Servlet

0

Я пытаюсь интегрировать очень старое веб-приложение Java и интерфейс AngularJs. Я не могу использовать Spring framework и в основном должен кодировать фрагменты вручную. Вот мои конкретные вопросы:

  1. Я отправляю форму входа в сервлет для проверки подлинности, сервлет отвечает с объектом разрешения и Jsessionid. Как я могу избежать повторного входа в систему, когда я ухожу и вернусь на страницу? Нужен ли мне другой файл cookie для хранения имени пользователя и пароля?

  2. Как обеспечить защиту CSRF с помощью этой архитектуры?

Пример будет очень высоко оценен.

Теги:
cookies
jsessionid

2 ответа

0
Лучший ответ

Я фактически реализовал два решения с использованием JWT, а другой - с помощью традиционной реализации Java Servlet с использованием Jsessionid cookie. Пока я чувствую, что cookie - это чище, поэтому вот некоторые подробности:

  1. Login.html отправляет имя пользователя/пароль в сервлет. Сервлет проверяет учетные данные и при успешном запуске нового сеанса (что приводит к созданию файла cookie jsessionid). Если аутентификация завершается с ошибкой, возвращается HttpServletResponse.SC_UNAUTHORIZED.

    а. Если обратный вызов успешный, клиент перенаправляет браузер на мою страницу application.html.

    б. Если сообщение об ошибке не появилось, появится сообщение и останется на странице login.html.

  2. когда приложение application.html загружает его, он немедленно отправляет фиктивный запрос на получение сервлета входа, чтобы убедиться, что сеанс по-прежнему действителен. Если да, он загружает остальную часть страницы, если не перенаправляет обратно на страницу входа.
  3. Веб-службы защищены таким же образом, используя фильтр Auth, который проверяет идентификатор сеанса.

пока он выглядит хорошо и очень прямолинейно.

2

Мое предложение - использовать токены JWT с библиотекой Satellizer, что упрощает вашу работу. После того, как пользователь выполнил вход в систему и вы выпустили ему токен JWT, он должен передать этот токен в каждом HTTP-запросе (Satellizer автоматически вводит его после успешного входа в систему). Вам необходимо проверить его и разрешить/ограничить действие пользователя соответствующим образом. Существует несколько библиотек Java, которые упрощают работу с токенами JWT на стороне сервера. Я использовал в нескольких своих проектах jose4j library, и у меня есть положительный опыт.

У Satellizer и jose4j есть хорошие примеры на их вики, как их использовать.

  • 0
    Это очень хорошее руководство, спасибо. Но на данный момент я ищу подход, основанный на cookie, а не JWT.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню