Java Web Start:自Java 8更新111以来无法通过代理进行隧道

Java Web Start:自Java 8更新111以来无法通过代理进行隧道,java,https,proxy,java-web-start,tunneling,Java,Https,Proxy,Java Web Start,Tunneling,自Java8更新111以来,我们的一些客户无法再运行我们的JavaWebStart客户端。他们得到: java.io.IOException:无法通过代理进行隧道。代理回报 “需要HTTP/1.1 407代理身份验证 看起来与此有关: 现在,设置隧道时需要基本身份验证的代理 默认情况下,for HTTPS将不再成功。如果需要,此 通过从中删除Basic,可以重新激活身份验证方案 jdk.http.auth.tunneling.disabledSchemes网络属性,或通过 将上同名的系统属性设置

自Java8更新111以来,我们的一些客户无法再运行我们的JavaWebStart客户端。他们得到:

java.io.IOException:无法通过代理进行隧道。代理回报 “需要HTTP/1.1 407代理身份验证

看起来与此有关:

现在,设置隧道时需要基本身份验证的代理 默认情况下,for HTTPS将不再成功。如果需要,此 通过从中删除Basic,可以重新激活身份验证方案 jdk.http.auth.tunneling.disabledSchemes网络属性,或通过 将上同名的系统属性设置为“”(空) 命令行

如果客户不愿意更改其代理身份验证方法,有什么办法吗


注意:
添加到JNLP的
中没有效果。这是因为这种方式只支持少数属性(在的底部附近有一个列表)。“jdk.http.auth.tunneling.disabledSchemes“不在其中。

我发现有一种方法,但不在开发人员手中:用户可以添加

-Djdk.http.auth.tunneling.disabledSchemes=""
用于Java控制面板中的Java 8→ JAVA→ 看法→ 运行时参数


用于Java控制面板中的Java 9→ 桌面设置→ 运行时参数

除了mbee的答案之外,还可以在jre的
net.properties
文件中配置:

C:\ProgramFiles(x86)\Java\jre1.8.0\u 131\lib\net.properties

目前最后一行100需要注释掉:

之前:

 #jdk.http.auth.proxying.disabledSchemes=
 jdk.http.auth.tunneling.disabledSchemes=Basic
之后:

 #jdk.http.auth.proxying.disabledSchemes=
 #jdk.http.auth.tunneling.disabledSchemes=Basic

请注意,尽管Java自动更新是通过基本Internet代理身份验证停用的,但在Java更新后需要重复这两个答案。

如果需要在运行时执行此操作,可以通过添加

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

当我试图通过代理服务器使用Apache Tomcat上运行的应用程序的基本身份验证来访问外部SOAP Web服务时,我也遇到了这个问题


在应用程序初始化期间以编程方式设置属性(System.setProperty(“jdk.http.auth.tunneling.disabledSchemes”,”);)无效。必须在[JRE\u HOME]\lib\net.properties]中将其设置为VM参数或(当然不是很好的方式:)。

您是否能够验证该属性是否正常工作?这个答案可能会有帮助:不,这是我第一次尝试使用属性标签。然而,java vm参数在这里似乎不适用,因为这里只支持几个参数。这里有一个列表:但是,现在我看到属性标签也有这样一个列表。嗯。所以在Java Web Start中没有可能启用基本身份验证代理隧道?您确定可以在运行时更改此类安全设置吗?我的意思是:你检查过这是否有效果吗?是的,你可以。几天前,我刚刚绞尽脑汁解决了这个问题,找到了这个解决我问题的线索。我在main方法中完成了属性的设置,这对我来说很好。听起来像是一个安全错误,但通过编程设置这样的属性确实有效,但是您必须确保在进行第一次网络连接之前完成初始化。有些库在初始化期间进行网络连接,例如,日志框架可以通过UDP设置日志记录,或者库可以“有帮助地”检查更新等。