2012-03-08 2 views
3

Я пишу приложение App Engine, который взаимодействует с корпоративной SharePoint Server, который необходимо для проверки подлинности с помощью NTLM Authentication (нет поддержки Basic, Digest или Kerberos AUTH)NTLM аутентификация не представляется возможным в AppEngine

Я не буду использовать Apache HttpClient 4.1.3, потому что он поддерживает аутентификацию NTLM из коробки.

Вы должны реализовать пользовательский ClientConnectionManager и ManagedClientConnection, потому что некоторые из классов, используемых внутри не в AppEngine JRE Class White List, но нашел пару реализаций в Интернете, нет Probs там (ESXX Server реализует один).

В конечном итоге я работаю над своим локальным сервером разработки приложений AppEngine , но, к моему удивлению, он не будет работать на сервере AppEngine.

После многих исследований я обнаружил, что NTLM аутентификации требуется постоянное соединение для того, чтобы сделать рукопожатие, заключающийся в обмене 3 сообщений в 2-х последовательных запросов HTTP. Эти 2 HTTP-запроса ДОЛЖНЫ быть выполнены с использованием того же соединения (постоянное соединение), если не сервер откажется от аутентификации.

Кажется URLFetchService использует различные соединения для каждого запроса, и нет способа сохранить соединение открытым. Тот же самый применяется, если вы используете URLConnection ... как только вы получите ответ , вы не можете отправить больше данных в этом соединении.

Неужели кто-то успел выполнить проверку подлинности NTLM в AppEngine?

Есть ли в любом случае постоянное соединение?

Я использую AppEngine версии 1.6.3.

ответ

1

Вам не повезло с этим. App Engine не поддерживает постоянные HTTP-соединения. ссылка на дне здесь: http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html

Единственный способ, которым я знаю, чтобы создать постоянное соединение на App Engine осуществляется через API канала, и это только для создания канала, не имеют доступа к ТСР-соединение.

+0

Спасибо, дракон, это то, чего я боялся. Я также задал этот вопрос, желая, чтобы кто-то из команды AppEngine дал некоторое представление о том, есть ли какой-либо план по улучшению сервиса URLFetchService с постоянными подключениями. –

+0

Я сомневаюсь, но это не помешает добавить запрос функции. Дизайн GAE, похоже, касается масштабируемости, где любой HTTP-запрос может быть перенаправлен на любой экземпляр, а экземпляры могут возникать и спускаться почти произвольно. Вся концепция наличия постоянной связи в этом случае идет вразрез с дизайном. Думая немного больше, серверы сконструированы так, чтобы быть несколько стойкими, поэтому должно быть возможным, чтобы HTTP-запрос из бэкэнд был постоянным, но я не вижу никакого API для такой функции. – dragonx

+1

Кто-то уже отправил запрос функции. Отправьте ссылку здесь: http://code.google.com/p/googleappengine/issues/detail?id=5073 –

Смежные вопросы