В чем разница между IntegratedWindowsAuthentication и Negotiate?

1

При настройке моего собственного прогнозируемого owin я хочу настроить его для использования аутентификации с использованием домена Windows. Насколько я понимаю, это выполняется через протокол переговоров, где он пытается Kerberos и не возвращается к NTLM, если он недоступен. Я посмотрел онлайн, и фрагмент кода выглядит так

public void Configuration(IAppBuilder app)
{
    HttpListener listener =
       (HttpListener)app.Properties["System.Net.HttpListener"];
    listener.AuthenticationSchemes =
        AuthenticationSchemes.IntegratedWindowsAuthentication;
   ...
}

Пока я обнаружил перечисление AuthenticationSchemas. Перечисление - это перечисление флага, но я пытаюсь выяснить, в чем разница между интегрированными окнами и переговорами? Оба, похоже, делают то же самое, что и Kerberos и отказоустойчивость к NTLM. Почему я должен использовать один или другой? Документация не очень помогает в этом вопросе.

Теги:
asp.net-web-api
windows-authentication
owin

3 ответа

2

Перечисление определяется как:

[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, проводной протокол отличается.

  • 0
    Еще один интересный момент, связанный с Negotiate ... Хотя Negotiate может использовать либо Kerberos, либо NTLM, если Windows считает, что Kerberos должен работать, он не вернется к NTLM, если произойдет сбой из-за несоответствия SPN или тому подобного.
0

Здесь, похоже, не так много документации. Http://msdn.microsoft.com/en-us/library/system.net.authenticationschemes(v=vs.110).aspx

Я должен был догадаться и сказать, что они либо идентичны, либо вариант IWA будет относиться к другим системным настройкам по умолчанию, таким как конфигурация IIS, а принуждение к переговорам переопределяет его. Вы можете попробовать использовать IWA, а затем изменить его в IIS (с OWIN/Katana).

Обратите внимание, что его в System.Net Namespace не OWIN, поэтому вам, вероятно, потребуется провести некоторое тестирование

0

IWA - это то, что функция вызывается IIS

Negotiate - это название проводного протокола, используемого для его реализации.

  • 0
    Это было бы хорошо, но в контексте этого перечисления какая разница? Почему они имеют разные значения флагов (6 против 2). Установив для него значение «Переговоры», я получаю цикл запроса, и мой ответ www-authenticate заголовок гласит «Переговоры», а второй « www-authenticate - «Переговор», за которым следует билет base64.

Ещё вопросы

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