407 无法通过代理建立隧道
我们有一个调用第三方 Web 服务的 Web 服务。为了测试这个实现,我们有不同的环境。
本地开发人员机器:当我们运行应用程序时,一切正常,我们的网络服务能够访问第三方 URL。 (本地计算机使用 Windows 操作系统)
本地开发服务器:在开发服务器上部署应用程序后,我们无法访问第三方URL并收到Http Proxy 407错误。 (我们使用的是 Linux,带有 IBM J9 JVM。)
为了解决此问题,我们尝试设置 -Dhttps.proxyUser XXX -Dhttps.proxyPassword XXX
,但我们仍然收到错误。我们尝试的第二个选项是使用 Authenticator.setDefault(new CustomImplAuthenticator())。但令人惊讶的是,JVM 没有调用 getPasswordAuthentication 并继续抛出错误。
我们使用 authenticator.setdefault
代码在本地开发人员计算机上再次运行相同的应用程序。我们可以像前面所说的那样访问 URL,但这一次 JVM 没有调用 getPasswordAuthentication
方法。经过网络搜索,我们发现通过NTLM解析了身份验证数据,因此我们认为该代码可以在Windows上运行。
谁能告诉我我们应该在 Linux 中部署的应用程序上配置哪些设置,以便至少调用为 Authenticator.setDefault 分配的实现。
We have one webservice which invokes third party webservice. To test this implementation we have different environments.
Local Developer Machine: When we run the application, everything works fine and our webservice is able to hit the third party URL. (Local Machine uses Windows OS)
Local Development Server: After deploying the application on development server, we are not able to access the third party URL and get Http Proxy 407 error. (We are having Linux, with IBM J9 JVM.)
To get around this problem, we tried setting -Dhttps.proxyUser XXX -Dhttps.proxyPassword XXX
, but we continued to get the error. The second option we tried is using Authenticator.setDefault(new CustomImplAuthenticator())
. But surprisingly, the JVM didnt invoke getPasswordAuthentication
and continued to throw error.
We ran the same application again on local developer machine with authenticator.setdefault
code. We could access the URL as said earlier, but this time again JVM didnt invoke getPasswordAuthentication
method. After searching over net, we found that through NTLM the authentication data is resolved and hence we feel that the code is working on windows.
Can anyone let me know what settings, we should configure on application deployed in Linux box so that at least implementation assigned for Authenticator.setDefault
will be invoked.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这取决于您如何建立 http 连接。
例如,如果您使用 Apache HTTPClient,则可以通过调用 setProxyAuthenticationHandler 将代理配置设置到 DefaultHttpClient 中。
您执行 http 调用的实现需要了解代理。
It depends on how you build up your http connection.
if you for example use the Apache HTTPClient you can set the proxy configuration into the DefaultHttpClient by invoking setProxyAuthenticationHandler.
Your implementation that does the http call needs to know about the proxy.