一尘不染

Java认证HTTP代理

java

如何配置用户名和密码以使用Java验证http代理服务器?

我刚刚发现以下配置参数:

http.proxyHost=<proxyAddress>
http.proxyPort=<proxyPort>
https.proxyHost=<proxyAddress>
https.proxyPort=<proxyPort>

但是,我的代理服务器需要身份验证。如何配置我的应用程序以使用代理服务器?


阅读 505

收藏
2020-03-17

共1个答案

一尘不染

(编辑:正如OP所指出的,java.net.Authenticator也需要使用a 。为了正确起见,我相应地更新了我的答案。)

(编辑#2:正如另一个答案中指出的那样,在JDK 8中,需要basicjdk.http.auth.tunneling.disabledSchemes属性中删除身份验证方案)

对于身份验证,用于java.net.Authenticator设置代理的配置并设置系统属性http.proxyUserhttp.proxyPassword

final String authUser = "user";
final String authPassword = "password";
Authenticator.setDefault(
  new Authenticator() {
    @Override
    public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication(authUser, authPassword.toCharArray());
    }
  }
);

System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);

System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
2020-03-17