Получение приглашения войти с помощью встроенной проверки подлинности Windows - PullRequest
101 голосов
/ 23 марта 2011

У меня есть приложение .NET 3.5, работающее под IIS 7 на сервере Windows 2003, и я не могу работать с интегрированной аутентификацией Windows, так как я продолжаю получать запрос на вход в систему. Я установил включенную проверку подлинности Windows в IIS со всеми другими типами безопасности, а проверка подлинности / авторизация файла моего приложения web.config настроена как:

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
    <authenticationmode="Windows"/>
    <authorization>
    <deny users = "?" />
    </authorization>
</system.web>

С этой настройкой я ожидаю за сценой проверки пользователя Windows, чтобы разрешить доступ и запретить анонимным пользователям. Тем не менее, я получаю всплывающее окно входа в Windows, когда я пытаюсь зайти на сайт.

Я устранял эту проблему в течение нескольких дней и не могу выяснить проблему. Основываясь на сообщениях со схожими проблемами, я подтвердил, что мой URL-адрес не содержит периодов, дважды проверил, что в моих настройках IE установлено значение «Включить встроенную проверку подлинности Windows», а также добавил свой URL-адрес на свои сайты в интрасети, но все еще получаю всплывающее окно.

Для дальнейшего устранения неполадок я включил анонимную аутентификацию в IIS и изменил свой файл web.config, к которому я могу подключиться, а затем добавил Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name. toString ()), чтобы попытаться увидеть, какой пользователь используется в аутентификации. В результате я получаю IIS APPPOOL \ myapp, который, очевидно, является пулом приложений IIS для моего приложения.

Я очень признателен за любую помощь, которую кто-либо может предоставить, так что я все еще использую только аутентификацию Windows, но не получаю всплывающее окно, и аутентификация Windows выполняется против фактического пользователя Windows.

Спасибо.


Дополнительные примечания после устранения неполадок:

Только что заметил, что при сбое входа в систему и появлении приглашения на вход в Windows снова отображается имя пользователя, которое попыталось войти в систему под именем «SERVERNAME» \ «USERNAME», что заставило меня поверить, что он пытался проверить пользователя на сервере против домена. Чтобы подтвердить это, я создал учетную запись локального пользователя непосредственно на сервере приложений с тем же именем пользователя и паролем, что и у пользователя сетевого домена, и попытался снова войти в систему. В результате я снова получил приглашение войти в систему, но когда на этот раз я ввел имя пользователя и пароль, я смог успешно войти в систему. Пользователь сети и сервер приложений находятся в одном домене, поэтому на самом деле не уверены, почему проверка подлинности IIS указывает на локальные учетные записи сервера приложений, а не на учетные записи домена. Я понимаю, что на данный момент это вопрос IIS, поэтому я также размещаю сообщения на forums.iis.net, но я ценю любые советы, которые кто-либо может получить с тех пор, как устранял это в течение нескольких дней.

Ответы [ 21 ]

3 голосов
/ 10 февраля 2015

В моем случае настройки авторизации были установлены неправильно.

Мне пришлось

  1. открыть .NET Authorization Rules в IISМенеджер

    open the .NET Authorization Rules in IIS Manager
  2. и удалить Правило отказа

    remove the Deny Rule
2 голосов
/ 17 января 2012

Я только что решил похожую проблему с приложением ASP.Net.

Симптомы: Я мог войти в свое приложение, используя локального пользователя, но не пользователя домена, даже если машина была правильно присоединена к домену (как вы говорите в своей дополнительной заметке). В средстве просмотра событий безопасности произошло событие с ID = 4625 «Несоответствие sid домена».

Решение: Я нашел решение здесь . Проблема заключалась в том, что на моих тестовых машинах были клонированы виртуальные машины (Windows Server 2008 R2; один контроллер домена и один веб-сервер). У обоих был одинаковый SID машины, что, очевидно, вызывало проблемы. Вот что я сделал:

  1. Удалить веб-сервер из домена.
  2. Запустите c: \ Windows \ System32 \ Sysprep \ Sysprep.exe на виртуальной машине.
  3. Перезагрузите ВМ.
  4. Присоединить веб-сервер к домену.

Вы теряете некоторые настройки в процессе (пользовательские настройки, статический IP, воссоздаете самозаверяющий сертификат), но теперь, когда я их воссоздал, все работает правильно.

2 голосов
/ 19 сентября 2013

У меня тоже была такая же проблема.Перепробовал большинство вещей, найденных на этом и других форумах.

Наконец-то все прошло успешно после небольшого выполнения RnD.

Я вошел в Настройки IIS и затем на свой веб-сайт разрешение опции добавили мою группу пользователей домена организаций.

Теперь, когда всем пользователям моего домена был предоставлен доступ к этому сайту, я не столкнулся с этой проблемой.

Надеюсь, что этопомогает

1 голос
/ 28 ноября 2011

Вы пытались войти с префиксом вашего домена, например, Домен \ Имя пользователя? В IIS 6 по умолчанию используется хост-компьютер в качестве домена по умолчанию, поэтому указание домена при входе может решить проблему.

1 голос
/ 09 мая 2017

Я попробовал описанные выше приемы настройки IIS и взлом реестра, и я пересмотрел и заново создал разрешения для пула приложений и еще дюжину других вещей, но так и не смог избавиться от цикла аутентификации, работающего на моей рабочей станции разработки, с IIS Express или IIS 7.5, из локального или удаленного сеанса просмотра. Я получил четыре 401.2 статусных ответа и пустую страницу. Точно такой же сайт, развернутый на моем промежуточном сервере IIS 8.5, работает безупречно.

Наконец, я заметил, что разметка в теле ответа, которую браузер отображал пустой, содержала страницу по умолчанию для успешного входа в систему. Я определил, что обработка пользовательских ошибок для ASP.NET и HTTP для ошибки 401 предотвращала / мешала работе Windows Аутентификация моей рабочей станции, но не промежуточного сервера. Я потратил на это несколько часов, но как только я удалил пользовательскую обработку только для ошибки 401, рабочая станция вернулась в нормальное состояние. Я представляю это как еще один способ выстрелить собственной ногой.

0 голосов
/ 25 ноября 2016

Я получил ту же проблему, и она была решена путем изменения удостоверения пула приложений пула приложений, в котором выполняется веб-приложение, на NetworkService enter image description here

0 голосов
/ 14 ноября 2016

Я столкнулся с той же проблемой, связанной с запросом учетных данных, и провел быстрый поиск, и ничто в Интернете не могло бы это исправить.Потребовалось некоторое время, чтобы найти проблему, глупую.

В IIS -> Дополнительные настройки -> Учетные данные физического пути (пусто)

Как только я добавил идентификатор машины (домен/ user), который имеет доступ к ВМ / серверу, запрос пароля будет остановлен.

Надеюсь, это поможет

0 голосов
/ 05 февраля 2016

В моем случае решением было (помимо предложенных выше настроек) перезагрузить мой / локальный компьютер разработки / IIS (хост-сервер). Мой пользователь только что был добавлен во вновь созданную группу безопасности AD - и политика не применялась к учетной записи AD пользователя, пока я не вышел из системы / не перезагрузил компьютер.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 10 июля 2014

У меня была та же проблема, потому что пользователь (Identity), который я использовал в пуле приложений, не относился к группе IIS_IUSRS.Добавил пользователя в группу и все работает

0 голосов
/ 22 ноября 2017

У меня возникла эта проблема в .net core 2, и после просмотра большинства предложений здесь кажется, что мы пропустили настройку в web.config

<aspNetCore processPath="dotnet" arguments=".\app.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Правильная настройка была forwardWindowsAuthToken = "true" , что кажется очевидным сейчас, но когда существует столько ситуаций для одной и той же проблемы, трудно определить

Редактировать: я также нашел полезным следующую Msdn статью , которая решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...