Я ищу в Интернете почти 4 дня и застрял.
Я создал простой веб-сайт интрасети ASP MVC4 и развернул его на сервере под названием: iis
. Этот компьютер находится в том же домене, что и мой компьютер.
В моем домене у меня 3 компьютера: my_pc
, iis
сервер и sql
сервер.
Когда я ввожу адрес http://iis
на моем компьютере я вижу, что вошел в систему правильно:
Это работает в IE и Chrome. <- до сих пор все в порядке!
Проблема начинается, когда я пытаюсь выполнить sql-запрос на своей веб-странице - WebAPI Controller.
В IE я получаю правильный результат, но в Chrome я получаю ошибку:
Внутри Web.config мне нужен конфиг:
<authentication mode="Windows" />
<identity impersonate="true" />
Внутри IIS я отключил анонимную аутентификацию и включил аутентификацию Windows.
Моему IIS доверяют делегировать запросы на мой SQL-сервер.
Самая странная часть заключается в том, что когда я пытаюсь открыть свою веб-страницу (с помощью sql-запроса), я получаю ошибку, а затем, когда я открываю ту же веб-страницу в IE (что успешно), я обновляю веб-сайт Chrome, загружается правильно и некоторое время работает (случайно, иногда 5 минут, иногда 30 секунд).
Я пробовал добавить [Authorize]
атрибут к конкретным методам, но это не помогло.
Похоже, Chrome не передает токен Kerberos в IIS.
Я пробовал шаги, описанные здесь: http://dev.chromium.org/developers/design-documents/http-authentication но безуспешно.
Может ли кто-нибудь проинструктировать меня пошагово, как мне настроить Google Chrome и отдохнуть (IIS, SQL, если необходимо), чтобы использовать проверку подлинности Windows в Chrome?
Ваша проблема в том, что вы используете документацию по хрому для решения проблемы с хромом. Хотя они похожи, это два разных браузера. Вам необходимо включить делегирование, занесите в белый список серверы, которым IIS может делегировать. То, как вы это делаете в Chrome, похоже на хром, но в случае ключей реестра вам необходимо использовать [HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome] для хрома вместо [HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Chromium] для хрома. .
Когда вы прочтете документ, вы обнаружите, что можете использовать групповую политику, Chrome для бизнеса или командную строку, чтобы включить делегирование, но в ваших настройках я предполагаю, что вы использовали параметр реестра. Я считаю, что основным ключом для установки является AuthNegotiateDelegateWhitelist. Установите значение «*», чтобы начать. После того, как он заработает, ограничьте его только теми серверами, которые вы хотите, изменив * на список серверов, разделенных запятыми, либо по IP-адресу, либо по имени DNS. Разрешены подстановочные знаки. Вы также можете посмотреть ключ AuthServerWhiteList.