Java Web Start:自Java 8 Update 111以来无法通过代理进行隧道传输

Mar*_*cus 16 java https proxy tunneling java-web-start

自Java 8 Update 111以来,我们的一些客户无法再运行我们的Java Web Start客户端了.他们得到:

java.io.IOException:无法通过代理进行隧道传输.代理返回"需要HTTP/1.1 407代理身份验证

看起来它与此更改有关:

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

如果客户不愿意改变他们的代理身份验证方法,有什么办法吗?

注意:添加<property name="jdk.http.auth.tunneling.disabledSchemes" value=""/><resources>JNLP无效.这是因为这种方式只支持少数属性(本页底部附近有一个列表)."jdk.http.auth.tunneling.disabledSchemes"不在其中.

Mar*_*cus 18

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

-Djdk.http.auth.tunneling.disabledSchemes=""
Run Code Online (Sandbox Code Playgroud)

for Java Control in Java Control Panel→Java→View ...→运行时参数

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


jan*_*jan 7

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

C:\Program Files (x86)\Java\jre1.8.0_131\lib\net.properties

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

之前:

 #jdk.http.auth.proxying.disabledSchemes=
 jdk.http.auth.tunneling.disabledSchemes=Basic
Run Code Online (Sandbox Code Playgroud)

后:

 #jdk.http.auth.proxying.disabledSchemes=
 #jdk.http.auth.tunneling.disabledSchemes=Basic
Run Code Online (Sandbox Code Playgroud)

请注意,在Java Update之后需要重复这两个答案,尽管使用基本Internet代理身份验证禁用了Java自动更新.


小智 5

如果需要在运行时执行此操作,则可以通过添加以下内容来设置jdk.http.auth.proxying.disabledSchemes属性的值

System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
Run Code Online (Sandbox Code Playgroud)

到您的应用程序的主要方法。

  • 听起来像一个安全漏洞 (2认同)