Приложение ASP.NET/SQL Server: Ошибка входа для пользователя "NT AUTHORITY\ANONYMOUS LOGON"

У меня есть устаревшее приложение, в котором я занимаюсь техническим обслуживанием. Он построен с использованием Visual Studio 2008, веб-форм ASP.NET, SQL Server и.NET 3.5. Приложение использует аутентификацию форм, поддерживаемую ActiveDirectoryMembershipProvider.

Компьютеры живут в двух доменах.

Домены:

  • Dev PC: companydomain
  • Тест-сервер: dev.companydomain
  • Dev SQL Server: companydomain

Приложение отлично работает на моем компьютере разработки и подключается к Dev SQL Server. Все находится в одной области.

При развертывании на тестовом сервере для тестирования возникает исключение, когда приложение подключается к базе данных. Браузер работает на Dev PC. Приложение зарегистрировано на использование моих учетных данных (companydomain\myusername). Сервер тестирования также подключается к Dev SQL Server.

Ошибка:

Error: SqlException (18456): Procedure:  Line: 65536 State: 1 Message: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Я запустил трассировку профилировщика SQL Server и получаю следующее:

Audit Login Failed  Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.   .Net SqlClient Data Provider    ANONYMOUS LOGON NT AUTHORITY\ANONYMOUS LOGON                    3208    90  2014-02-24 15:40:43.313         

Web.config

<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH" loginUrl="Default.aspx" />
</authentication>
<identity impersonate="true">
</identity>

<Connection name="Connection Name" connectionString="Data Source=DatabaseServer;Initial Catalog=DatabaseName;Integrated Security=SSPI;"/>

Настройки аутентификации IIS

Настройки на тестовом сервере.

IIS Authentication Settings

Я добавил код регистрации, который сбрасывает текущего пользователя. Thread.CurrentPrincipal.Identity возвращает пользователя Windows, который Thread.CurrentPrincipal.Identity в приложение. WindowsIdentity.GetCurrent() возвращает NT AUTHORITY\IUSR.

Что вызывает исключение? Почему идентификация "анонимный вход" происходит в соединение с базой данных, а не с аутентифицированным пользователем?

+2
источник поделиться

Посмотрите другие вопросы по меткам или Задайте вопрос