【发布时间】:2015-04-01 17:11:18
【问题描述】:
我正在尝试在我的 Java 应用程序中支持经过身份验证的代理。我的理解是java.net.Proxy类不支持认证,需要自己处理认证。
我创建了 java.net.Proxy 类的一个子类,它接受两个附加参数,用户名和密码。
实现 HTTP 代理身份验证非常简单,getHttpProxyAuthenticationHeader 方法简单地返回 base64 编码的身份验证信息,传递给 HttpUrlConnection 或类似的。
不过,我在使用 Sock 代理时遇到了问题。我找不到任何有关向 Socks 服务器发送身份验证的文档。我不确定是否需要在我的类中使用 authenticateSocksProxy(OutputStream stream) 等方法实现 SOCKS 身份验证协议,然后调用
authedProxy.authenticateSocksProxy(outputstream);
在使用套接字之前
outputstream.writeBytes(myData.getBytes());
另一种选择是返回身份验证数据的字节[],然后手动写入数据,而不是编写身份验证数据的类。
我认为 java.net.Authenticator 或 System.setProperty 方法没有任何用处,因为我的实现需要在每个连接的基础上工作并且是线程安全的。
非常感谢任何帮助。
【问题讨论】:
标签: java http authentication proxy socks