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

SQL Server 2000 + ASP.NET: ошибка входа для пользователя NT AUTHORITY \ ANONYMOUS LOGON

Я только что перенес рабочую станцию ​​разработчика

После переезда одна из моих страниц, которая обращается к базе данных 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.

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