сообщение ajax на веб-сервисы SharePoint прервано вызовами ntlm - PullRequest
2 голосов
/ 28 января 2010

У меня есть веб-часть, которая интенсивно использует javascript при реализации пользовательского интерфейса. Он также использует асинхронные запросы XmlHttpRequest для некоторых веб-служб SharePoint (я использую SPServices, кстати).

Для некоторых запросов пользователь сталкивается с проблемами аутентификации NTLM, и после ввода учетных данных запрос завершается. Это происходит 3 раза при загрузке одной страницы, хотя существует более 3 запросов. Есть несколько вещей, которые меня смущают:

  • Как я уже сказал, не все запросы имеют эту проблему
  • пользователь уже зашел на сайт с NTLM-аутентификацией, так почему запросы ajax оспариваются?
  • Это в доменной среде Windows. В среде без домена эта проблема не существует (хотя в обоих случаях используется аутентификация Windows).

Конечно, все это в IE. Я попытался вставить заголовок проверки подлинности NTLM в запрос ajax, но это ничего не изменило (я не думал, что это произойдет, но попытка того стоила).

Есть предложения?

Ответы [ 4 ]

1 голос
/ 08 июля 2010

Internet Explorer запоминает, имеет ли он NTLM-аутентификацию на данном сайте. Если его когда-либо попросят отправить POST на этот сайт, он будет ожидать, что сайт повторно аутентифицирует его. Если этого не происходит, браузер не будет отправлять какие-либо подробности в теле сообщения.

1 голос
/ 02 марта 2010

Использование: transport clientCredentialType = "Windows"

Проверьте http://msdn.microsoft.com/en-us/library/bb226411(BTS.20).aspx для получения дополнительной информации

1 голос
/ 28 января 2010

Так не должно быть. Аутентификация Windows выполняется для каждого процесса, и, если вы уже прошли аутентификацию, вы сохраняете аутентификацию при повторной загрузке, не имеет значения, является ли это основным подключением браузера или запросом XHR.

Я видел это странное поведение на одном из наших тестовых серверов. В этом случае также был нарушен доступ WebDAV к SharePoint, и иногда вы не могли получить доступ к путям \\sharepointserver\sites\somesite (но через несколько минут вы могли бы сделать это снова). Казалось, что в этом случае что-то не так с аутентификацией Kerberos и что иногда выдаются неправильные токены. Однако мы не решили эту проблему, просто установили новый сервер и подключили к нему базы данных контента. Это сработало: -)

0 голосов
/ 17 февраля 2010

Эта проблема связана с тайм-аутом сеанса HTTP1.1. При первом входе на сайт, прошедший проверку подлинности NTLM, открывается сеанс HTTP. Этот сеанс проходит проверку подлинности, и каждый запрос, который вы сделали во время открытия этого сеанса, будет автоматически проходить проверку подлинности с помощью токена NTLM сеанса. Теперь, когда вы делаете XmlHttpRequest, если сеанс HTTP все еще открыт, тогда ваш запрос не запрашивает никакой аутентификации, потому что он уже готов. Но если сеанс истекает или закрывается по тем или иным причинам. Затем вам будет предложено войти в систему. Чтобы лучше понять это, просто сделайте быстрый поиск по протоколу HTTP1.1, и вы лучше поймете, о чем я говорю.

...