у нас есть система, в которой клиенту нужна встроенная проверка подлинности Windows.
Это приложение ASP.NET 3.5, подключающееся к Sql Server 2005.
Веб-сервером является Server 2003 R2 SP2.
Сервер БД - это Server 2003 SP2 (не R2).
На сервере БД я запустил следующий скрипт
exec sp_grantlogin 'myDomain\myUserGroup'
USE myDbName
exec sp_grantdbaccess 'myDomain\myUserGroup'
У меня 3 пользователя в группе пользователей Windows 'myDomain \ myUserGroup' прямо сейчас. Учетные записи всех трех пользователей помечены как доверенные для делегирования. Учетная запись веб-сервера в AD помечается как доверенная для делегирования.
Веб-приложение помечено как использующее проверку подлинности Windows (все остальные отключены).
Файл web.config имеет следующие строки:
<authentication mode="Windows" ></authentication>
<identity impersonate="true" />
<authorization>
<deny users="?"/>
</authorization>
Тем не менее, когда я пытаюсь подключиться к веб-приложению с пользователем, который входит в группу пользователей, я получаю сообщение об ошибке:
System.Data.SqlClient.SqlException:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Моя строка соединения строится из Sql ConnectionStringBuilder, сконструированного так:
ConnectionStringBuilder.DataSource = "MYDBSERVER"
ConnectionStringBuilder.InitialCatalog = "MYDBCATALOG"
ConnectionStringBuilder.IntegratedSecurity = True
Если я HARD CODE один из разрешенных имитировать учетные записи в строке web.config <identity /
>, это работает. Но если я снимаю учетную запись с жестким кодом и пытаюсь передать идентификационную информацию с компьютера клиента. Я получаю ошибку.
Так что мне кажется, что у меня не настроено что-то правильно для сценария многократного интегрированного входа, но я не могу понять, что именно.
Заранее спасибо!