使用 Java 进行身份验证的 HTTP 代理

2022-08-31 14:26:11

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

我刚刚找到以下配置参数:

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

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


答案 1

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

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

对于身份验证,请使用 来设置代理的配置并设置系统属性和 。java.net.Authenticatorhttp.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", "");

答案 2

你快到了,你只需要附加:

-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword

推荐