Не могу настроить делегирование пользователя с удаленного компьютера: Пользователю "NT AUTHORITY\ANONYMOUS LOGON" не удалось войти в систему.
Должна работать интегрированная безопасность, SQL-аутентификацию не предлагать.
Локально на сервере serv0 работает, только если в адресе написать localhost.
Есть 2 сервера:
serv0:
Windows 2003, Active Directory, IIS (под SYSTEM), ASP.NET.
Режим леса на Windows 2003.
AD: Включено делегирование для SqlUser, serv0$, serv1$.
SPN: setspn -a http/serv0 serv0
setspn -a http/serv0.dom.local serv0
Политика безопасности домена (и контроллера домена):
Олицетворять клиента после проверки подлинности = служба, администраторы, system, serv0, serv1
Работа в режиме операционной системы = system, serv0, serv1
Сетевой доступ: разрешить трансляцию анонимного SID в имя
IIS: включена только "Встроенная проверка подлинности Windows"
ASP.NET web.config:
<authentication mode="Windows"/>
<identity impersonate="true"/>
<authorization>
<deny users="?"/>
</authorization>
connectionString="Server=tcp:serv1.dom.local;Database=DB1;Integrated security=SSPI;"
serv1:
Windows 2003, MSSQL 2005 (под SqlUser)
что еще не хватает?
Здравствуйте, qwertyytrewq
Точного ответа у меня нет, единственное что могу предложить добавить пользователя в SQL server domain\computer$ где computer — имя компьютера с которого заходит клиент с необходимыми ему правами. почему так, мне доподлинно не известно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, stump, Вы писали:
S>А клиент? Кто клиент?
S>Похоже, что клиент не предает credential на IIS и IIS не может аутентифицировать клиента. Соответственно "NT AUTHORITY\ANONYMOUS LOGON" не может быть делегирован дальше на другой сервер.
S>Другой вариант, попробуйте убрать tcp: из строки подключения: "Data Source=serv1.dom.local;Initial Catalog=DB1;Integrated security=SSPI;"
В строке подключения tcp: наоборот желательно для поддержки Kerberos.
Клиентом является IE 7, т.е.:
IE(ws) -> IIS(serv0) -> SQL(serv1)
В настройках IE:
- включено "Разрешить встроенную проверку подлинности Windows".
- сайт добавлен в "местную интрасеть".
- для пользователя dom\user1 в AD отключено "Учетная запись важна и не может быть делегирована".
дополнительно было настроено:
IIS:
cscript adsutil.vbs set w3svc/1/root/mySite/NTAuthenticationProviders "Negotiate,NTLM"
Группа приложений (Application pool): под пользователем "Локальная система" вместо "Сетевой службы".
SQL:
добавлен логин IIS-сервера dom\serv0$
Тест показывает:
System.Security.Principal.WindowsIdentity.GetCurrent().Name = dom\user1
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType = NTLM (с удаленной машины)
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType = Kerberos (с локальной машины)
Как и видно, проблема в том, что аутентификация между IE (удаленным) и IIS используется NTLM вместо Kerberos.
Все остальные настройки системы и сервисов настроены по умолчанию. Что еще необходимо?