我正在编写一个与a接口的App Engine应用程序 需要使用NTLM Authentication进行身份验证的企业SharePoint Server(不支持Basic,Digest或Kerberos身份验证)
我正在使用Apache HttpClient 4.1.3,因为它支持NTLM 验证开箱即用。
您需要实现自定义ClientConnectionManager和 ManagedClientConnection因为内部使用了一些类 不在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。
答案 0 :(得分:1)
你在这一点上运气不好。 App Engine不支持持久HTTP连接。 这里底部的参考:http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html
我知道在App Engine上创建持久连接的唯一方法是通过Channel API,这只是用于创建频道,您无法访问底层TCP连接。