Proxy 使用OpenCMIS客户端进行HTTP代理身份验证

Proxy 使用OpenCMIS客户端进行HTTP代理身份验证,proxy,opencmis,apache-chemistry,Proxy,Opencmis,Apache Chemistry,我正在使用BindingType.Browser开发OpenCMIS客户端。创建一个传递用户、密码、浏览器URL、绑定类型和存储库ID所需参数的会话将按预期工作。将创建会话,并可以执行进一步的步骤 现在我想让我的客户机在使用HTTP代理访问internet的机器上运行。要指定要访问的代理,我设置了系统属性http.proxyUrl和http.proxyPort。只要代理不需要身份验证,这就太有效了 嗯,这就是我现在挣扎的地方。我在测试代理中激活了身份验证,并在客户端代码中添加了参数proxy_U

我正在使用BindingType.Browser开发OpenCMIS客户端。创建一个传递用户、密码、浏览器URL、绑定类型和存储库ID所需参数的会话将按预期工作。将创建会话,并可以执行进一步的步骤

现在我想让我的客户机在使用HTTP代理访问internet的机器上运行。要指定要访问的代理,我设置了系统属性http.proxyUrl和http.proxyPort。只要代理不需要身份验证,这就太有效了

嗯,这就是我现在挣扎的地方。我在测试代理中激活了身份验证,并在客户端代码中添加了参数proxy_USER和proxy_PASSWORD来创建会话。但这似乎不起作用。我已经调试了使用的StandardAuthenticationProvider以验证发生了什么。HTTP头代理身份验证是由身份验证提供者创建的,但化学框架似乎在发送请求时没有该头。在我的代理日志中,收到的请求不包含任何安全标头

CONNECT my.server.org:443 HTTP/1.1
User-Agent: Java/1.8.0_111
Host: my.server.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Proxy-Connection: keep-alive

有什么建议吗?

我在以下线程中找到了解决方案:

自Java 8 Update 111以来,默认情况下,通过在代理HTTPS时将Basic添加到jdk.http.auth.tunneling.disabledSchemes networking属性,基本身份验证方案在Oracle Java运行时被停用。有关更多信息,请参阅

要重新激活代理,需要设置jdk.http.auth.tunneling.disabledSchemes=。启动应用程序时,这不能通过VM参数完成

-Djdk.http.auth.tunneling.disabledSchemes=""
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
或者在运行时通过在应用程序的主方法中设置属性

-Djdk.http.auth.tunneling.disabledSchemes=""
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");