Для клиента у нас есть веб-сайт с включенной аутентификацией Windows в IIS, который подключается к веб-службе Sharepoint и загружает на него файлы. В IIS включена проверка подлинности Windows:
Служба Sharepoint использует проверку подлинности Windows, запрос строится следующим образом:
WebRequest req = WebRequest.Create(destUri);
req.Method = "PUT";
req.Headers.Add("Overwrite", "F");
req.Timeout = System.Threading.Timeout.Infinite;
req.UseDefaultCredentials = true;
req.PreAuthenticate = true;
req.Credentials = CredentialCache.DefaultCredentials;
Stream outStream = req.GetRequestStream();
В Edge он работает точно так, как ожидалось, но в Chrome или Firefox Sharepoint возвращает ошибку Authorized (401).
Для обоих браузеров мы можем видеть с помощью инструментов разработки браузера, что HTTP-заголовок авторизации отправляется правильно:
WWW-Authenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuzU8jQ5ujyQAOWWouNMC0eMhlMLOECtjeSDjEK42yn4iRjbG4pek8lwuADX2ex/XW5ENE++rWyY8TQPYWEswAjhp0Hz3dI/bXK9q2RBw+s0M7NPeKEuEgxEwM+3coA78KbUZnS7TKk8gEFKpwO4M=
(Например)
Я предполагаю, что проблема связана с тем, как Chrome/Firefox обрабатывает аутентификацию Windows и информацию о пользователе, например пароль, но я не знаю, как это исправить. В конечном итоге мы можем изменить настройки Chrome/Firefox и настройки IIS (например, раздел поставщиков аутентификации Windows). Ниже вы найдете более подробную информацию о запросе, сделанном против Sharepoint, захваченном с помощью Wireshark.
Спасибо !