java смоделировать почтовую форму с редиректом

У меня есть приложение с формой входа. В этом приложении есть сервлет, который может выполнять вход в систему, принимая имя пользователя и пароль (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 ответ

  1. Если вы не используете JAAS для реализации безопасности

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

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