我正在寫一個 企業SharePoint服務器需要使用NTLM Authentication驗證接口App Engine應用程序(用於基本,摘要或Kerberos身份驗證不支持)NTLM身份驗證不可能的AppEngine
我使用Apache HttpClient 4.1.3,因爲它支持開箱即用的NTLM 身份驗證。
您需要實現自定義ClientConnectionManager和 ManagedClientConnection,因爲所使用的一些類的內部 不在AppEngine JRE Class White List,卻發現一對夫婦的 實現在互聯網如此沒有probs有(ESXX Server實現一個)。
我最終讓它在我的本地AppEngine開發服務器 上工作,但讓我驚訝的是它不能在生產AppEngine服務器上工作。
多次調查後,我發現NTLM身份驗證需要一個 持久連接爲了使包括在 握手在連續2個HTTP請求交換3個消息。這2個HTTP請求必須 使用相同的連接(永久連接)完成,如果不是 服務器將拒絕認證。
看起來URLFetchService使用不同的連接爲每個 請求並且沒有辦法保持連接打開。如果您使用的是URLConnection,則適用相同的 ...只要您收到 響應,就無法在該連接中發送更多數據。
有沒有人設法在AppEngine中進行NTLM身份驗證?
反正有持久連接嗎?
我正在使用AppEngine版本1.6.3。
感謝dragonx,這就是我所害怕的。我發佈了這個問題,希望AppEngine團隊的某些人能夠提供一些洞察,看看是否有任何關於使用持久連接改進URLFetchService的計劃。 – 2012-03-09 12:42:44
我對此表示懷疑,但放入功能請求並沒有什麼壞處。 GAE設計似乎與可伸縮性有關,任何HTTP請求都可以路由到任何實例,並且實例幾乎可以任意地出現和下降。在這種情況下持續連接的概念違背了設計。 稍微思考一下,後端被設計得有些持久,所以後端的HTTP請求應該是持久的,但是我沒有看到這樣的功能的API。 – dragonx 2012-03-10 06:14:33
有人已經提交了功能請求。在此處發佈鏈接:http://code.google.com/p/googleappengine/issues/detail?id=5073 – 2012-03-11 22:43:31