ApplicationPoolIdentity IIS 7.5 для SQL Server 2008 R2 не работает


11

У меня есть небольшой тестовый скрипт ASP.NET, который открывает соединение с базой данных SQL Server на другом компьютере в домене. Это работает не во всех случаях.

Настроить:

IIS 7.5 под W2K8R2 пытается подключиться к удаленному экземпляру SQL Server 2008 R2. Все машины находятся в одном домене.

Используя ApplicationPoolIdentity для веб-сайта, он не может подключиться к SQL Server с помощью следующего:

Не удалось войти в систему для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: сбой входа для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'.

Однако, если я переключаю идентификацию модели процесса на NETWORK SERVICE или мою учетную запись домена, соединение с базой данных будет успешным.

Я предоставил доступ \ $ в SQL Server.

Я не делаю никакой аутентификации на веб-сайте, это просто простой скрипт, чтобы открыть соединение с базой данных, чтобы убедиться, что она работает.

У меня включена анонимная аутентификация и настроено использование идентификатора пула приложений.

Как мне сделать эту работу? Почему ApplicationPoolIdentity пытается использовать ANONYMOUS LOGON? А еще лучше, как мне заставить его перестать использовать анонимный вход?


1
Вы всегда можете просто установить идентификатор AppPool как NETWORK SERVICE.
JohnThePro

Ответы:


4

У меня была такая же проблема. Согласно этой странице , ApplicationPoolIdentity должен обращаться к сетевым ресурсам как учетная запись компьютера (DOMAIN \ COMPUTERNAME $), но вместо этого он использовал NT AUTHORITY \ ANONYMOUS LOGON для доступа к SQL-серверу.

Я смог использовать это исправление, чтобы заставить ApplicationPoolIdentity работать так, как говорит док. Это исправление не описывает решение для доступа к сетевым ресурсам как NT AUTHORITY \ ANONYMOUS LOGON, но оно связано с изменением пароля компьютера.

Этот поток stackoverflow помог мне найти это решение:

Другие полезные советы по отладке удостоверений ASP.NET и удостоверений SQL

Поскольку встроенная аутентификация SQL связана с идентификацией потока, полезно иметь возможность просматривать вашу идентификацию пользователя, идентификацию потока (которая изменяется в зависимости от олицетворения) и регистрацию на сервере SQL. Этот фрагмент ASPX отображает все три:

<%@ Import Namespace="System.Security.Principal" %>

<div>ASP.NET Request User identity: <%= User.Identity.Name %></div>
<div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div>
<asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>"
           SelectCommand="select SYSTEM_USER" />
<asp:DetailsView DataSourceID="CurrentUserData" runat="server" />

2

У меня была точно такая же проблема. Я выдернул волосы на несколько часов и наконец перезагрузил машину. Проблема ушла! Обратите внимание, что перезапуск IIS через iisreset НЕ решил проблему. Он исчез, только когда я перезапустил сервер.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.