Java 在Amazon SDK上使用NTLM身份验证配置代理设置时出现问题
我正在使用AmazonSDK1.5.6,并尝试使用代理服务器初始化连接。 初始化成功,但当我尝试使用Java 在Amazon SDK上使用NTLM身份验证配置代理设置时出现问题,java,proxy,amazon-ec2,cloud,Java,Proxy,Amazon Ec2,Cloud,我正在使用AmazonSDK1.5.6,并尝试使用代理服务器初始化连接。 初始化成功,但当我尝试使用AmazonEC2Client时,失败如下 错误: 捕获异常:状态代码:407,AWS服务:AmazonEC2,AWS 请求ID:null,AWS错误代码:407未经授权,AWS错误消息: 无法解组错误响应(文件过早结束。)响应 状态代码:407错误代码:407未经授权的请求ID:null 初始化代码: protected AmazonEC2 initAmazonSDKClient(String
AmazonEC2Client
时,失败如下
错误:
捕获异常:状态代码:407,AWS服务:AmazonEC2,AWS
请求ID:null,AWS错误代码:407未经授权,AWS错误消息:
无法解组错误响应(文件过早结束。)响应
状态代码:407错误代码:407未经授权的请求ID:null
初始化代码:
protected AmazonEC2 initAmazonSDKClient(String endpoint) {
AWSCredentials awsCredentials =
new BasicAWSCredentials(_account.getAccessKey(), _account.getSecretKey());
ClientConfiguration config = getProxySettings();
AmazonEC2 ret = CloudServicesEC2Api.getAmazonEC2Client(awsCredentials, config);
ret.setEndpoint(endpoint);
_endPointToAmazonEC2Client.put(endpoint, ret);
return ret;
}
private ClientConfiguration getProxySettings() {
ClientConfiguration ret = new ClientConfiguration();
String host = _proxySettings.getServer();
if (!StringUtils.isNullOrEmpty(host )) {
ret.setProxyHost(host );
}
if (!StringUtils.isNullOrEmpty(_proxySettings.getPort())) {
ret.setProxyPort(Integer.valueOf(_proxySettings.getPort()));
}
String proxyUserName = _proxySettings.getUserName();
if (!StringUtils.isNullOrEmpty(proxyUserName)) {
ret.setProxyUsername(proxyUserName);
}
String proxyPassword = _proxySettings.getPassword();
if (!StringUtils.isNullOrEmpty(proxyPassword)) {
ret.setProxyPassword(proxyPassword);
}
ret.setProxyWorkstation(host );
ret.setProxyDomain(host );
return ret;
}
使用客户端并导致错误的代码:
private List<InstanceStatus> getStatusChecks(AmazonEC2 ec2Client, String[] hostIds) {
DescribeInstanceStatusRequest describeInstanceRequest =
new DescribeInstanceStatusRequest().withInstanceIds(hostIds);
DescribeInstanceStatusResult describeInstanceResult =
ec2Client.describeInstanceStatus(describeInstanceRequest);
return describeInstanceResult.getInstanceStatuses();
}
我已经尝试了workstation&domain的多个版本,我尝试将其留白,没有用
请告知 经过一些研究,Amazon SDK处理NTLM代理请求的方式出现了一些问题。我们比较了传递给连接成功的其他库(例如JClouds)的代理参数,并尝试在AmazonSDK上应用相同的代理参数,但没有成功。 我们甚至用wireshark比较了数据包,一切都是一样的。这个图书馆有点不对劲
ret.setProxyWorkstation(host );
ret.setProxyDomain(host );