При настройке моего собственного прогнозируемого owin я хочу настроить его для использования аутентификации с использованием домена Windows. Насколько я понимаю, это выполняется через протокол переговоров, где он пытается Kerberos и не возвращается к NTLM, если он недоступен. Я посмотрел онлайн, и фрагмент кода выглядит так
public void Configuration(IAppBuilder app)
{
HttpListener listener =
(HttpListener)app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes =
AuthenticationSchemes.IntegratedWindowsAuthentication;
...
}
Пока я обнаружил перечисление AuthenticationSchemas
. Перечисление - это перечисление флага, но я пытаюсь выяснить, в чем разница между интегрированными окнами и переговорами? Оба, похоже, делают то же самое, что и Kerberos и отказоустойчивость к NTLM. Почему я должен использовать один или другой? Документация не очень помогает в этом вопросе.
Перечисление определяется как:
[System.Flags]
public enum AuthenticationSchemes
{
None = 0,
Digest = 1,
Negotiate = 2,
Ntlm = 4,
IntegratedWindowsAuthentication = Ntlm | Negotiate,
Basic = 8,
Anonymous = 32768,
}
Что скорее отвечает на вопрос...
Как IWA отличается от того, как просто вести переговоры, видя, что Negotiate падает обратно в Ntlm, вам интересно? Разница заключается в том, как сообщения Ntlm отправляются в заголовках Http. Сообщения Plain Ntlm будут проходить через заголовок WWW-Authenticate
который выглядит как NTLM <some base 64 encoded data>
, тогда как сообщения Ntlm для протокола Negotiate будут обматывать данные NTLM в дополнительных материалах протокола. Веб-сервер может отправлять много типов заголовков Authenticate, если клиент не поддерживает их.
Таким образом, хотя Ntlm и Negotiate могут выполнять аутентификацию Ntlm, проводной протокол отличается.
Здесь, похоже, не так много документации. Http://msdn.microsoft.com/en-us/library/system.net.authenticationschemes(v=vs.110).aspx
Я должен был догадаться и сказать, что они либо идентичны, либо вариант IWA будет относиться к другим системным настройкам по умолчанию, таким как конфигурация IIS, а принуждение к переговорам переопределяет его. Вы можете попробовать использовать IWA, а затем изменить его в IIS (с OWIN/Katana).
Обратите внимание, что его в System.Net Namespace не OWIN, поэтому вам, вероятно, потребуется провести некоторое тестирование
IWA - это то, что функция вызывается IIS
Negotiate - это название проводного протокола, используемого для его реализации.
www-authenticate
заголовок гласит «Переговоры», а второй « www-authenticate
- «Переговор», за которым следует билет base64.