AppEngine中无法进行NTLM身份验证

时间:2012-03-08 19:12:24

标签: google-app-engine

我正在编写一个与a接口的App Engine应用程序 需要使用NTLM Authentication进行身份验证的企业SharePoint Server(不支持Basic,Digest或Kerberos身份验证)

我正在使用Apache HttpClient 4.1.3,因为它支持NTLM 验证开箱即用。

您需要实现自定义ClientConnectionManagerManagedClientConnection因为内部使用了一些类 不在AppEngine JRE Class White List,但发现了几个 在互联网上实现所以没有probs(ESXX Server实现一个)。

我最终让它在我的本地AppEngine Development服务器上运行 但令我惊讶的是,它无法在生产AppEngine服务器上运行。

经过多次调查,我发现 NTLM身份验证需要一个 持久连接以便进行握手 在2个连续的HTTP请求中交换3条消息。那2个HTTP请求必须 使用相同的连接(持久连接),如果不是 服务器将拒绝进行身份验证。

似乎 URLFetchService为每个使用不同的连接 请求,无法保持连接打开。相同 如果您使用URLConnection ...,只要您收到一个,就适用 响应您无法在该连接中发送更多数据。

是否有人设法在AppEngine中进行NTLM身份验证?

是否有持久连接?<​​/ p>

我正在使用AppEngine版本1.6.3。

1 个答案:

答案 0 :(得分:1)

你在这一点上运气不好。 App Engine不支持持久HTTP连接。 这里底部的参考:http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html

我知道在App Engine上创建持久连接的唯一方法是通过Channel API,这只是用于创建频道,您无法访问底层TCP连接。