为了确保我理解您的需求,这里有一个摘要:您希望给定用户 A 连接到您的第一台服务器 Server1.domain1.com,这将连接(从 Java 服务器内部)第二台服务器 server2.domain2.com (目前在 IIS 下)。然后 server1 将用户转发到 server2 网页,挑战是避免任何身份验证弹出窗口。
根本问题是从服务器 1 到客户端浏览器,然后从客户端浏览器到服务器 2,服务器 1 从服务器 2 获得的身份验证票证。
这不是一个具体的 java 问题,而是一个全球性的 WEB 问题。实际上,server2 接收到的唯一用于识别客户端用户的信息是在 http 流中,简而言之就是 IP 地址、URL 和 cookie。
如果 server1 和 server2 不是同一个域(请参阅 RFC 2109: http ://www.ietf.org/rfc/rfc2109.txt),则 Cookie 是死胡同,因为只有在以下情况下,浏览器才会将 cookie 发送到给定域的服务器cookie 是从同一域的服务器(相同或另一个)返回的。
所以答案是一个两步过程:
- 首先,server1 应该从 server2 获取 sessionID,可能是通过提交具有适当凭据的 http 请求(基本身份验证?表单字段?或更糟糕的是,“Windows 像域身份验证”?)。对于这一步,我建议使用 apache httpclient 库。
- 其次,server1 应该将客户端用户转发到 server2 的适当 URL,该 URL 将包含 sessionID 作为参数。它要求 server2 提供这种进入的可能性。
乍一看,我看不到其他简单的解决方案。