У меня есть новая сборка сервера под управлением Windows Server 2012 R2, IIS 8.5 (включая функцию ClassicASP) и SQL Server 2014 Express. Я хочу использовать идентификатор пула приложений для подключения к базе данных. База данных настроена на «Режим проверки подлинности Windows».
Мой идентификатор пула приложений называется activbase.net
. Я настроил вход в систему безопасности в SQL Server под названием IIS AppPool\activbase.net
, и пользователь сопоставил его с моей базой данных с доступом db_datareader
и db_datawriter
.
Однако, когда я пытаюсь получить доступ к базе данных с веб-сайта, я получаю:
Не удается открыть базу данных «ActivbaseLive», запрошенную при входе в систему. Вход не выполнен.
Я думал, что этого достаточно, чтобы соединение заработало. Журнал приложений (средство просмотра событий) показывает:
Ошибка входа в систему для пользователя "NT AUTHORITY\IUSR". Причина: не удалось открыть явно указанную базу данных «ActivbaseLive». [КЛИЕНТ: ]
Поэтому я добавил NT AUTHORITY\IUSR
аналогичным образом в SQL Server>Безопасность>Логины и базы данных>[ActivbaseLive]>Безопасность>Пользователи, и это устраняет проблему.
Мои вопросы заключаются в следующем:
- Должен ли я добавлять
NT AUTHORITY\IUSR
логин/пользователь в дополнение кIIS AppPool\activbase.net
логину/пользователю в мой экземпляр SQL Server и базу данных? - Есть ли проблема с безопасностью при этом? (ПРИМЕЧАНИЕ: это будет производственная среда)
Спасибо, Крис
NT AUTHORITY\IUSR
используется для запросов без проверки подлинности, аIIS AppPool\activbase.net
используется для запросов с проверкой подлинности (после входа в систему и создания токена IPrincipal). Может быть, кто-то может подтвердить это. Кроме того, если вышесказанное верно, наверняка выбранная учетная запись пользователя была выбрана IIS до того, как он обнаружит, исходит ли текущий запрос от аутентифицированного пользователя или нет? - person Chris Walsh   schedule 11.10.2014