带有 Microsoft TMG 代理 + HTTP Post + SSL 的 ApacheHttpClient 4.3.3 问题
Posted
技术标签:
【中文标题】带有 Microsoft TMG 代理 + HTTP Post + SSL 的 ApacheHttpClient 4.3.3 问题【英文标题】:Issue with ApacheHttpClient 4.3.3 with Microsoft TMG Proxy + HTTP Post + SSL 【发布时间】:2015-01-16 22:56:31 【问题描述】:我在通过 Microsoft TMG 和 httpclient 4.3.3 向 Salesforce 的 web2lead servlet 发送 POST 请求时遇到问题。如果我尝试使用 Ctnlm 作为代理请求,它工作正常(通过 TMG 代理)。此外,如果我只是通过代理向 www.google.com 发出 GET 请求,它工作正常。这是我尝试使用的代码:
HttpHost httpTargetHost = new HttpHost("www.salesforce.com", 443, "https");
HttpPost httpPost = new HttpPost("/servlet/servlet.WebToLead");
NTCredentials ntCreds = new NTCredentials("proxyUser", "proxyPassword", "workstation", "DOMAIN");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope("proxyHost","proxyPort"), ntCreds );
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
clientBuilder.useSystemProperties();
clientBuilder.setProxy(new HttpHost("proxyHost","proxyPort"));
clientBuilder.setDefaultCredentialsProvider(credsProvider);
clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
CloseableHttpClient client = clientBuilder.build();
CloseableHttpResponse response = client.execute(httpTargetHost, httpPost);
在回复中,我得到了这个:
2015-01-16 17:33:31,158 [main] DEBUG org.apache.http.headers(LoggingManagedHttpClientConnection.java:113) - http-outgoing-0 2015-01-16 17:33:31,164 [main] DEBUG org.apache.http.impl.auth.HttpAuthenticator(HttpAuthenticator.java:77) - 需要身份验证
感谢您提供的任何帮助。
问候, 埃里克
【问题讨论】:
我想补充一点的是,当我不需要通过 TMG 时,POST 可以正常工作。 【参考方案1】:错误信息说得很清楚:
Forefront TMG 需要授权才能完成请求。拒绝访问 Web 代理过滤器。
您需要某种您不提供的授权。此问题并非特定于 Apache HTTPClient。请与 Forefront TMG 安装的管理员确认您需要哪种类型的授权(以及哪些凭据)。这可能是您尝试过的那种授权,只有凭据是错误的,或者可能是需要某种其他类型的授权。
【讨论】:
显然,但问题归结为为什么相同的请求适用于非 SSL GET 请求。如前所述,通过 TMG 可以正常工作。或者,您是说 POST + SSL 与 GET + non-SSL 需要不同的身份验证方案? POST 和 GET 指向不同的站点。可能是代理配置为限制对某些站点的访问,即允许您使用这些凭据访问外部站点,但不能访问内部站点。尤其是在安装 Salesforce 的情况下,这是有道理的。 这是一个公司代理。它可以防止所有未经授权的 Internet 访问。所以,这里不是这样。以上是关于带有 Microsoft TMG 代理 + HTTP Post + SSL 的 ApacheHttpClient 4.3.3 问题的主要内容,如果未能解决你的问题,请参考以下文章
Lync 项目经验-39-分配公网证书 For 反向代理服务器 TMG 2010(图解)