Как сервлет может передать обратно в браузер все содержимое прокси-сервера? - PullRequest
0 голосов
/ 21 сентября 2018

Я обещал что-то сделать, но мои менеджеры хотят уверенности, что это может быть сделано.То, что кажется простой задачей, на удивление трудно найти пример.Он состоит из:

  1. Браузер запрашивает сервлет Java для доступа к удаленному сайту.
  2. Сервлет открывает HttpUrlConnection к этому удаленному сайту.
  3. Сервлетотправляет запрос на вход в систему на этот удаленный сайт.
  4. Сервлет получает форму входа в систему.
  5. Сервлет заполняет форму входа в систему из данных сеанса пользователя, а затем отправляет их.
  6. сервлет получает «приветствие» с удаленного сайта, в комплекте с заголовками и файлами cookie.
  7. Запрос шага 1, наконец, заполняется содержимым, заголовками и файлами cookie с шага 6.

У меня проблемы с получением примеров кода, из-за чего я думаю, что то, что я хочу сделать, не может быть достигнуто.Может кто-нибудь указать мне пример?

Спасибо,

Джером.

1 Ответ

0 голосов
/ 21 сентября 2018

Основная проблема - это домен файла cookie сеанса.

Точнее, вопрос в том, что вы планируете следующий после шага 7. Скажите своесервлет находится по адресу "https://mycompany.com/loginServlet",, а удаленный сайт - магазин игрушек" https://toys.com". Вы надеялись, что после шага 7 браузер может быть перенаправлен на "https://toys.com" и получить правильныйслужба, подобающая вошедшему в систему пользователю? Это не будет работать, потому что, когда браузер получил файл cookie сеанса от «mycompany.com» (на шаге 7), этот файл cookie будет присоединен к дальнейшим запросам на «mycompany.com» - но не к"toys.com", это отличная особенность безопасности.

Короче говоря, этот подход может работать, если и сервлет, и сайт игрушек находятся в одном домене .Мне немного неудобно с точки зрения безопасности и управления паролями, но не берите в голову. Очевидно, этот подход также будет работать в (нереальном) случае, когда ваш сервер прокси-сервер отправляет все дальнейшие запросы от браузера на "toys.com", но это нереально для типичного коммерческого сайта (из-за относительных / абсолютных ссылок, ajaxes и т. д.).

Если это разные домены, то я второй мудрый комментарий, сделанный "Rahul B" выше: пожалуйста, посмотрите вЕдиный вход и / или выясните у "toys.com", какие механизмы входа они предлагают - возможно, у них уже есть что-то вроде "Войти с помощью Google", что достаточно удобно.

...