Назад | Перейти на главную страницу

IIS, SQLServer, Google Chrome и проверка подлинности Windows

Я ищу в Интернете почти 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.