该方案旨在使用户隐式访问servlet(例如http://someip/myservlet),该servlet进而对受密码保护的网站(例如mysite.com-托管在启用了Use Windows身份验证的IIS服务器上)进行身份验证,然后打开该mysite.com –以便:


目标用户将无法通过提示输入用户名和密码,因为他将通过servlet(托管在诸如tomcat之类的某些服务器上)
在不知道凭据的情况下,任何其他访问link text的用户将无法访问


要求是
(它必须打开该网站而不获取内容,因为mysite.com具有动态功能)

Java(HttpURLConnection)是否可能?

任何帮助表示赞赏。

谢谢。

最佳答案

为确保我理解您的需求,以下为摘要:
您希望给定用户A在您的第一台服务器Server1.domain1.com上进行连接,该服务器将(从Java服务器内部)在第二台服务器server2.domain2.com(当前在IIS下)上进行连接。然后server1将用户转发到server2网页,挑战是避免任何身份验证弹出窗口。

根本问题是从server1到客户端浏览器,然后从客户端浏览器到server2,传输server1从server2获得的身份验证票。

它不是一个Java问题,而是一个全局WEB问题。实际上,server2接收到​​的唯一用于标识客户端用户的信息是在http流中,简而言之就是IP地址,URL和cookie。

如果server1和server2不是同一域(请参阅RFC 2109:http://www.ietf.org/rfc/rfc2109.txt),则cookie是死胡同,因为仅当cookie是从服务器(相同或另一个)返回时,浏览器才会将cookie发送到给定域的服务器。 )。

因此,答案是一个两步过程:


首先,服务器1应该从服务器2获得一个sessionID,这可能是通过提交具有适当凭据(基本身份验证?表单字段?或更糟的是“ Windows像域身份验证”?)的http请求。对于此步骤,我建议使用apache httpclient库。
其次,server1应该将客户端用户转发到server2的适当URL,该URL包括sessionID作为参数。它要求server2提供这种进入的可能性。


乍一看,我看不到其他简单的解决方案。

关于java - 从Servlet打开受密码保护的网站,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1042904/

10-11 03:22