Microsoft Negotiate является поставщиком поддержки безопасности (SSP), который действует как
прикладной уровень между интерфейсом поставщика поддержки безопасности
(SSPI) и другие SSP. Когда приложение вызывает SSPI для входа
в сети он может указать поставщика общих служб для обработки запроса. Если
Приложение определяет переговоры, переговоры ведут анализ запроса и
выбирает лучшего поставщика общих служб для обработки запроса на основе настроенного клиентом
политика безопасности.
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-negotiate
Как указано в статье «Переговоры» не возвращаются к дайджесту. В каком-то смысле Negotiate похож на Kerberos, но с резервной копией по умолчанию NTLM
В настоящее время пакет безопасности согласования выбирает между Kerberos и
NTLM. Переговоры выбирают Kerberos, если он не может быть использован одним из
системы, вовлеченные в аутентификацию или вызывающее приложение
не предоставил достаточной информации для использования Kerberos.
Windows Challenge / Response (NTLM) - это используемый протокол аутентификации.
в сетях, которые включают системы под управлением операционной системы Windows
и в автономных системах.
Аутентификация - это только внутренний метод, не знаю, почему вы путаетесь с ней и протоколами, хороший взгляд на внутреннее устройство здесь: https://blogs.msdn.microsoft.com/dsnotes/2015/12/30/negotiate-vs-ntlm/
Способ посмотреть на это:
- Microsoft изначально придумала способ аутентификации на серверах / машинах Windows, который они назвали NTLM , для этого использовался метод запроса / ответа (иногда называемый запросом).
- Впоследствии они разработали новый протокол под названием Kerberos, который был принят.
- Чтобы убедиться, что все существующие приложения работают должным образом со старым / новым, у нас есть новый способ аутентификации под названием Negotiate, который пробовал Kerberos и, если он недоступен, применяется для NTLM.
Редактировать 1: Применение этих механизмов аутентификации для Интернета было формализовано в RFC 4559 .
Редактировать 2: NTLM аутентифицирует одно соединение, а не запрос, в то время как другие механизмы аутентификации обычно аутентифицируют один запрос. В первом случае это не должно сильно меняться, но во втором случае имеет смысл попробовать NTLM, сохраняя одно соединение (используя HTTP Keep-Alive и отправляя учетные данные только один раз в первом запросе). Там может быть разница в производительности. Держите нас в курсе ваших результатов.
Пример кода WebRequest, взятого из Документы Microsoft , вы можете заменить Webrequest на HttpWebRequest.
// Create a request for the URL.
WebRequest request = WebRequest.Create(
"http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams and the response.
reader.Close();
response.Close();