ASP.NET HTTP Keep-Alive Connection Context

1

Я работаю над заменой интеграции проверки подлинности Windows в приложении ASP.NET с помощью проверки подлинности NTLM вручную. Проверка подлинности NTLM не является проблемой, у меня есть полная реализация с открытым исходным кодом модуля NTLM SSPI (https://github.com/FreeRDP/FreeRDP/tree/master/winpr/libwinpr/sspi/NTLM). Моя основная проблема заключается в том, что NTLM ориентирован на соединение, в то время как HTTP обычно не имеет состояния. После прочтения о NTLM-аутентификации, это описано как требующее использования HTTP-Keep-Alive, где ни один файл cookie не отправляется с каждым запросом. До тех пор, пока соединение сохраняется в сети, состояние аутентификации NTLM остается.

Я нашел способы правильно включить поддержку HTTP в IIS, но я не нашел способа в ASP.NET связать данные с определенным соединением. Даже если cookie может быть предоставлен клиенту в конце NTLM, NTLM не может быть завершен, если не поддерживается состояние сеанса между получением NTLM CHALLENGE и отправкой сообщения NTLM AUTHENTICATE. Очевидно, что при использовании встроенной интегрированной поддержки аутентификации Windows IIS он может отслеживать состояние между несколькими этапами аутентификации NTLM.

Я ищу способ отслеживать несколько запросов, поступающих на то же HTTP-соединение, которое сохраняется в живых. Данные в HttpRequest отображаются только для текущего запроса, и ничто не позволяет мне идентифицировать соединение. В лучшем случае для идентификации того же соединения можно использовать одну из переменных сервера (http://msdn.microsoft.com/en-us/library/ms524602.aspx), такую как эфемерный порт соединения. Это может потенциально работать, но я не мог найти способ надежного обнаружения, когда связанное соединение закрыто.

Идеи, кто-нибудь?

Теги:
authentication
ntlm

1 ответ

0

Нет такого способа узнать, находится ли текущий запрос в новом подключении tcp или повторно использовать соединение.

Это можно сделать, отправив дополнительный заголовок для определения текущего соединения tcp в заголовке http.

  • 0
    Это то, что, кажется, имеет место, но как тогда это сделать со встроенной поддержкой встроенной аутентификации Windows? Он может работать без cookie-файлов сеанса.
  • 0
    Аутентификация NLTM через HTTP требует постоянного подключения. В ASP.NET все еще не уверен, что текущий запрос от того же соединения (если есть больше соединений в то же время)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню