NTLM authentication not possible in AppEngine

I am writing an App Engine application that communicates with a corporate SharePoint Server that needs to authenticate with NTLM Authentication (no Basic, Digest or Kerberos support)

I am using Apache HttpClient 4.1.3 because it supports NTLM authentication out of the box.

You need to implement custom ClientConnectionManager and ManagedClientConnection because some of the classes used internally are not in the AppEngine JRE Class White List , but found a pair ( ESXX Server implements one).

I end up working on my local AppEngine Development server but to my surprise it won't work on the AppEngine server.

After a lot of research, I found that NTLM authentication requires persistent communication to make a handshake of 3 messages in 2 consecutive HTTP requests. These 2 HTTP requests MUST be done using the same connection (persistent connection) unless the server refuses to authenticate.

The URLFetchService seems to be using different connections for each request and there is no way to keep the connection open. The same applies if you are using URLConnection ... once you receive a response you cannot send more data on this connection.

Has anyone been able to perform NTLM authentication in AppEngine?

Is there a persistent connection anyway?

I am using AppEngine version 1.6.3.

+3


source to share


1 answer


You were unlucky. App Engine does not support persistent HTTP connections. link below: http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html



The only way to create a persistent connection to App Engine is through the channel API, and just to create the channel you don't have access to the underlying TCP connection.

+1


source







All Articles