NTLM-аутентификация невозможна в AppEngine - PullRequest
3 голосов
/ 08 марта 2012

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

I 'используя Apache HttpClient 4.1.3 , поскольку он поддерживает проверку подлинности NTLM "из коробки".

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

Со временем он работает на моем локальном сервере разработки AppEngine, но, к моему удивлению, он не будет работать на рабочем сервере AppEngine.

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

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

Кому-нибудь удалось выполнить проверку подлинности NTLM в AppEngine?

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

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

1 Ответ

1 голос
/ 09 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...