Чтобы убедиться, что я понял вашу потребность, вот краткое изложение:
вы хотите, чтобы данный пользователь A подключился к вашему первому серверу Server1.domain1.com, который будет подключаться (изнутри java-сервера) ко второму серверу server2.domain2.com (в настоящее время под IIS). Затем server1 будет перенаправлять пользователя на веб-страницу server2, при этом задача состоит в том, чтобы избежать любого всплывающего окна аутентификации.
Основная проблема заключается в передаче с сервера1 в клиентский браузер, затем из клиентского браузера в сервер2 билета аутентификации, который сервер1 получил от сервера2.
Это не проблема Java, а проблема глобальной сети. Действительно, единственная информация, полученная сервером2 для идентификации пользователя клиента, находится в потоке http, в двух словах: IP-адрес, URL-адрес и файлы cookie.
Cookies - это тупик, если server1 и server2 не являются одним и тем же доменом (см. RFC 2109: http://www.ietf.org/rfc/rfc2109.txt),, поскольку браузер будет отправлять cookie-файлы на сервер данного домена, только если cookie-файл был возвращен с сервера ( то же или другое) того же домена.
Таким образом, ответ состоит из двух этапов:
- Во-первых, server1 должен получить sessionID от server2, возможно, путем отправки http-запроса с соответствующими учетными данными (basic-auth «поля формы» или, что еще хуже, «Windows like domain auth»?). Для этого шага я предлагаю использовать библиотеку apache httpclient.
- Во-вторых, server1 должен перенаправить пользователя клиента на соответствующий URL-адрес server2, который будет включать sessionID в качестве аргумента. Это требует, чтобы server2 предлагал такую возможность войти.
С первого взгляда я не вижу другого простого решения.