Java Web Start:自 Java 8 Update 111 以来无法通过代理建立隧道

2022-09-02 03:22:01

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

java.io.IOException:无法通过代理建立隧道。代理返回“HTTP/1.1 407 需要代理身份验证”

看起来与此更改有关

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

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

注意:添加到 JNLP 没有任何效果。这是因为只有少数属性以这种方式受支持(此页面底部附近有一个列表)。“jdk.http.auth.tunneling.disabledSchemes”不在其中。<property name="jdk.http.auth.tunneling.disabledSchemes" value=""/><resources>


答案 1

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

-Djdk.http.auth.tunneling.disabledSchemes=""

对于 Java 控制面板中的 Java 8 → Java → 视图...→运行时参数

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


答案 2

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

C:\Program Files (x86)\Java\jre1.8.0_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 更新后重复,尽管 Java 自动更新已使用基本 Internet 代理身份验证停用。