Я только что перенес рабочую станцию разработчика
После переезда одна из моих страниц, которая обращается к базе данных SQL Server 2000, получает следующую ошибку с моей веб-страницы ASP.NET 2.0: «Ошибка входа для пользователя NT AUTHORITY \ ANONYMOUS LOGON».
У меня есть:
Моя строка подключения с использованием SqlConnection: «Server = {SERVER_NAME}; Database = {DB_NAME}; Integrated Security = SSPI; Trusted_Connection = True;»
Почему он пытается войти в систему с помощью NT AUTHORITY \ ANONYMOUS LOGIN? Я должен предположить, что это какой-то параметр или запись web.config, специфичная для IIS7, поскольку до миграции она работала нормально.
ПРИМЕЧАНИЕ. SQL Server поддерживает только проверку подлинности Windows - без смешанного режима или только SQL.
Мне кажется, что ограниченное делегирование не включено: Настройка серверов для делегирования.
У меня была такая же проблема с БД SQL Server 2008. Хотя, вероятно, есть разные способы решить эту проблему, благодаря ссылке Адама я смог найти этот раздел, который решил мою ситуацию:
5) По умолчанию проверка подлинности Windows выполняется в ядре. Это может привести к сбою HTTP-клиентов, отправляющих учетные данные при первоначальном запросе.
IIS 7.0 Проверка подлинности в режиме ядра включена по умолчанию в IIS 7.0. Это улучшает производительность проверки подлинности Windows и упрощает развертывание протокола проверки подлинности Kerberos. Однако это может привести к сбою некоторых клиентов, отправляющих учетные данные Windows при первоначальном запросе, из-за конструктивного ограничения аутентификации в режиме ядра. Обычные клиенты браузера не затрагиваются, потому что они всегда отправляют первоначальный запрос анонимно.
ПРИМЕЧАНИЕ. Это критическое изменение относится как к классическому, так и к интегрированному режимам.
Отключение режима ядра в диспетчере IIS решило проблему, правильно отправив учетные данные.
Я знаю, что это небольшой поздний ответ, но я также наткнулся на ту же проблему и решил ее. Думал поделиться со всеми вами.
Я могу понять, почему вы можете не захотеть вводить аутентификацию SQL, поскольку клиент может не одобрять этого.
Чтобы заставить аутентификацию Windows работать, вы можете выполнить следующие шаги:
1) В web.config укажите аутентификацию для окон
2) В web.config олицетворять личность в true
3) Создайте нового виртуального пользователя домена для приложения, скажем abc@mydomain.com, с паролем.
4) В разделе олицетворения укажите этот идентификатор пользователя и пароль.
5) В IIS удалите анонимный доступ и проверьте встроенную проверку подлинности Windows.
6) Предоставьте этому новому пользователю доступ к метабазе IIS с помощью aspnet_regiis -ga "mydomain \ username"
7) Предоставьте этому пользователю доступ к физическому каталогу вашего виртуального каталога. Вам нужно будет добавить туда этого пользователя.
8) Обратите внимание, что если ваше приложение выполняет запись в какой-либо файл журнала, вам также необходимо предоставить права на запись.
9) Обратите внимание, что если ваше приложение обращается к некоторой базе данных с выполнением некоторых сохраненных процедур, вам нужно будет добавить этого пользователя в учетные записи сервера sql с правами dbowner в базе данных приложения.
Кроме того, вы можете не захотеть попасть в ловушку безопасности, предоставив доступ к NT Authority / Anonymous Logon, поэтому в этом случае вам поможет создание собственного пользователя приложения.
Я надеюсь, что это поможет, и если он попросит вас сделать это как «Ответ»
Вы пытались отредактировать пул приложений и изменить режим управляемого конвейера на классический вместо интегрированного?
Это может быть связано с критические изменения в IIS7 для приложений ASP.Net 2.0.
Возможно, добавить учетную запись локальной сетевой службы в базу данных на SQL.
Надеюсь, поможет.