java смоделировать почтовую форму с редиректом - PullRequest
1 голос
/ 13 октября 2011

У меня есть приложение с формой входа.В этом приложении есть сервлет, который может выполнить вход в систему, принимая имя пользователя и пароль (post, без параметров get), а также вход в систему и настройку файла cookie Jsession.

Когда я вызываю этот сервлет с отправкой формы, он работает.

Но у меня есть другое приложение, куда я хочу перенаправить и автоматически войти в первое приложение.Это будет для демонстрационного использования и, таким образом, будут использоваться статические имя пользователя и пароль.Но я не хочу, чтобы пользователи могли видеть имя пользователя и пароль.Поэтому я хочу использовать пост на Java.

Это работает частично, после того, как пост сделан (логин выполнен), я перенаправляю на страницу в приложении 1. Но тогда я больше не авторизируюсь,Я полагаю, это как-то связано с доменами.Приложения 1 и 2 не находятся в одном домене.

Как я могу исправить мою проблему?

Вот код, который я использую для выполнения почтового запроса

getLog().debug("Open the connection to remote URL(" + remoteURL + ")");
URL url = new URL(remoteURL);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");
connection.setAllowUserInteraction(false);

connection.setDoOutput(true);
OutputStreamWriter wr;
wr = new OutputStreamWriter(connection.getOutputStream());

wr.write(requestParameters);
wr.flush();
wr.close();

response.sendRedirect(redirectURL);

1 Ответ

0 голосов
/ 16 октября 2011
  1. Если вы не используете JAAS для реализации безопасности

    • Конечно, когда вы выполняете аутентификацию в App1, которую вы сохраняете в HttpSession, устанавливается флаг, чтобы узнать, аутентифицирован ли пользователь, чтобы избежать необходимости входа в систему при последующих запросах. Таким образом, ServletContainer управляет HttpSession, автоматически отправляя в браузер идентификатор сеанса с использованием различных механизмов (наиболее распространенный файл cookie).
    • Давайте представим, что контейнер сервлета управляет HttpSession (идентификатор сессии) с помощью файлов cookie. Когда ваше App2 выполняет вход (и это успешно), вы не сохраняете cookie с идентификатором сеанса для дальнейшего запроса.
    • Вам необходимо проверить, какой механизм управляет идентификатором сеанса, и повторить поведение браузера в вашем App2 для дальнейших запросов.
  2. Если вы используете JAAS для реализации безопасности. У вас есть два варианта:

    • Проверьте, поддерживает ли ваш контейнер сервлетов (или сервер приложений) программный вход в систему. Таким образом, вы можете программно войти в свое приложение 2 в ту же область безопасности приложения 1.
    • Проверьте, поддерживает ли контейнер сервлетов (или сервер приложений) SSO. Это позволяет вам настроить оба приложения на использование одной и той же области безопасности, и когда пользователь входит в приложение App1, он автоматически также входит в приложение App2. (Если вы это сделаете, проверьте поведение выхода из системы)
...