Проверка подлинности Windows - Kerberos или NTLM (переговоры oYICO…)
У меня проблемы с одним пользователем в интрасети. Клиентская сторона - это приложение WPF, которое взаимодействует с веб-службой ASP.Net Web API.
Клиент отправляет HTTPS GET и POST запросы, используя
HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
UseDefaultCredentials = true,
PreAuthenticate = true
};
В IIS проверка подлинности Windows включена с поставщиками NTLM и Negotiate.
Система работает для всех пользователей, кроме одного, который получает 401.1, но только из запросов POST.
В настоящее время я пытаюсь выяснить, что отличается с этим пользователем. Единственное, что я заметил, это другой вид заголовка авторизации.
ОтВот (и много других ресурсов) я читаю:
Если заголовок начинается с буквы «Т» (пример: HTTP: Authorization = Negotiate TlRMTVNTU ...), тогда вы используете NTLM.Если это начинается с "Y" (пример: Авторизация: переговоры YIILjgYGKwYB ...), тогда вы успешно используете Kerberos.
Я вижу заголовки для рабочих запросов, которые, кажется, используют Kerberos:
Authorization: Negotiate YIIT4QYGKwYBBQUCoIIT1TCC...
Заголовок, который отправляется от пользователя, который не удается POST выглядит следующим образом
Authorization: Negotiate oYICOTCCAjWgAwoBAaKCAhg...
Начинается сo
. Так это NTLM или Kerberos? Сбой аутентификации для POST-запроса, но успешно на GET!