带有 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 问题的主要内容,如果未能解决你的问题,请参考以下文章

6.TMG2010公网发布

Lync 项目经验-39-分配公网证书 For 反向代理服务器 TMG 2010(图解)

Lync 小技巧-58-使用Pfsense代替TMG或者F5为Lync卖命

TMG2010和OUTLOOK的问题

TMG 2010 添加静态路由实现多网段互访

求 Forefront TMG 2010 的下载地址,官方的下不了了