问题描述
我有一个试图通过http代理访问Web服务的Java应用程序。 Java应用程序是我们无法访问源代码的第三方应用程序。
I have a Java application that is trying to access a web service via http proxy. The Java app is 3rd party app for which we don't have access to source code.
可以通过传递Java启动参数来配置它的启动。
我想知道一个人可以传递的java属性是什么,以便应用程序可以使用登录用户的NTLM凭据来验证代理连接?
Its launch can be configured by passing Java launch parameters among other things.I am wondering what are the java properties that one can pass so that the app can use the logged in user's NTLM credentials to authenticate proxy connections?
当我通过https.proxyHost和https.proxyPort(即-Dhttps.proxyHost = abcd ...到jvm命令行),我确实看到了日志的不同。现在它失败并显示以下消息。
When I passed https.proxyHost and https.proxyPort (i.e. -Dhttps.proxyHost=abcd ... to jvm command line), I do see difference in the logs. Now it fails with message below.
[WrapperSimpleAppMain] [AuthChallengeProcessor] ntlm authentication scheme selected
INFO | jvm 5 | 2015/06/03 14:49:25 | 2015-06-03 14:49:25,380
INFO [WrapperSimpleAppMain] [HttpMethodDirector] No credentials available for NTLM <any realm>@proxy.ins.dell.com:80
INFO | jvm 5 | 2015/06/03 14:49:25 | Exiting due to fatal exception.
INFO | jvm 5 | 2015/06/03 14:49:25 | com.atlassian.bamboo.agent.bootstrap.RemoteAgentHttpException: HTTP status code 407 received in response to fingerprint request
我尝试传递http.proxyUser和http.proxyPassword。那没用。
我想知道正确的配置是什么使Java应用程序透明地使用代理信息而不必更改代码。
I tried passing http.proxyUser and http.proxyPassword. That didn't work.I am wondering what the right configuration is to make a Java app transparently use proxy info without having to make code changes.
谢谢
推荐答案
最后我通过反复试验弄明白了。传递java.net.useSystemProxies = true以及https.proxyPort,https.proxyHost解决了这个问题。
Finally I figured out by trial and error. Passing java.net.useSystemProxies=true along with https.proxyPort, https.proxyHost resolved this.
基本上java vm命令行得到了
Basically the java vm command line got
-Djava.net.useSystemProxies = true -Dhttps.proxyPort = 80 -Dhttps.proxyHost = proxyserver.mycompany.com
我没有通过https.proxyUser,https.proxyPassword。我相信代理身份验证使用与登录NTLM凭据相同的凭据。
I didn't have to pass https.proxyUser, https.proxyPassword. I believe proxy authentication used the same credentials as my login NTLM credentials.
这篇关于要传递给Java应用程序以使用http代理进行身份验证的Java属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!