401.2 Недопустимые заголовки аутентификации — исправлено Fiddler

У меня есть служба Web Api 2 и веб-сайт javascript. Оба размещены на внутреннем сервере IIS для внутренних клиентов. Мне нужно иметь возможность получить пользователя Windows с сайта на службу через проверку подлинности Windows.

Когда я перехожу к операции метаданных службы в Chrome (например: http://theServer.domain.net/myController/metadata) я получаю правильный результат вместе с информацией о пользователе.

Но когда я пытаюсь загрузить эти данные в свое приложение, я получаю следующую ошибку:

401.2 У вас нет прав для просмотра этой страницы из-за недопустимых заголовков аутентификации.

Однако это не работает только в Chrome. IE 11 загружает его просто отлично.

Это то, что я пробовал/установил:

  • Наиболее распространенное решение для этого — убедиться, что у вас включена проверка подлинности Windows для IIS. Я дважды проверил, что это включено. И что на моем веб-сайте IIS есть оба модуля проверки подлинности Windows.

  • Я запускаю оба пула приложений (один для службы и один для сайта) в качестве безопасности идентификации пула приложений. И я убедился, что пулы приложений имеют доступ к файлам на диске. (Чтобы быть уверенным, я даже попробовал это с их настройкой для запуска от имени меня.)

  • Я также настроил свой веб-сайт с помощью <authentication mode="Windows" /> в файле web.config.

  • Мой веб-сайт настроен как для Windows, так и для анонимной аутентификации. И моя служба настроена только для проверки подлинности Windows.

  • И на сервере, и на веб-сайте проверка подлинности Windows настроена так, что единственным провайдером является NTLM.

  • В обоих пулах приложений я включил 32-битные приложения.

Поскольку ничего из этого не работало, я попытался запустить Fiddler, чтобы посмотреть, смогу ли я просмотреть заголовки и выполнить отладку на более низком уровне. Но как только Fiddler запустился, проблема исчезла! Ошибка исчезла, и сервер правильно прошел аутентификацию! Однако он работает только во время работы скрипача. (Я попытался прочитать Помощь! Запуск Fiddler исправляет мое приложение, но я не видел ничего, что могло бы помочь.)

Итак, мой вопрос: что мне нужно сделать, чтобы это работало с проверкой подлинности Windows? (Мне нужна информация о пользователе.)


person Vaccano    schedule 09.02.2017    source источник
comment
Что вы подразумеваете под веб-сайтом javascript? Как это настраивается? Поскольку вы правильно получаете учетные данные при прямом доступе к URL-адресу службы, ваша проблема, вероятно, связана с конфигурацией вашего веб-сайта.   -  person GôTô    schedule 10.02.2017
comment
Это SPA, созданное с использованием Aurelia и Typescript.   -  person Vaccano    schedule 10.02.2017
comment
Без задней части?   -  person GôTô    schedule 10.02.2017


Ответы (1)


Аутентификация Windows из браузера поддерживается только в IE.

из: https://technet.microsoft.com/en-us/library/cc754628(v=ws.10).aspx

Проверка подлинности Windows, включающая проверку подлинности NTLM и Kerberos v5, лучше всего подходит для среды интрасети по следующим причинам: Клиентские компьютеры и веб-серверы находятся в одном домене.

  • Администраторы могут убедиться, что в каждом клиентском браузере установлен Internet Explorer 2.0 или более поздней версии.

  • Соединения прокси-сервера HTTP, которые не поддерживаются NTLM, не требуются.

  • Kerberos v5 требует подключения к Active Directory, что невозможно в среде Интернета.

Что касается скрипача - у вас включена опция «Автоматическая аутентификация»? https://stackoverflow.com/a/34851503/1165140

person Avner    schedule 10.02.2017