Олицетворение и делегирование (с SQL Server) в ASP.NET - PullRequest
4 голосов
/ 21 мая 2011

Я написал простое приложение ASP.NET, которое работает в качестве интерфейса для простой базы данных MSSQL. Приложение доступно через Интернет.

Используются два физических сервера: контроллер домена Active Directory WS2008R2, на котором также работает MSQL Server 2008 R2, и другой сервер, веб-сервер (WS2008R2 / IIS7.5), на котором находится мое приложение.

Пул приложений для моего приложения "FooPool" имеет собственный идентификатор пользователя AD, который запускается под именем "FooUser". FooUser не имеет каких-либо разрешений на доступ к базе данных SQL Server, вместо этого только разрешение имеет моя личная учетная запись «MyUser».

Идея состоит в том, что при попытке доступа к этому веб-приложению сначала выполняется проверка подлинности Windows с IIS, а затем мое веб-приложение использует олицетворение для доступа к базе данных SQL Server.

Однако мое приложение не работает.

Я тестировал приложение, не касаясь SQL Server, просто чтобы проверить олицетворение, поэтому я сделал Response.Write (WindowsIdentity.GetCurrent (false) .Name); который правильно показывает приложение, подражающее MyUser и не выступающее в качестве FooUser. Это работает из всех современных браузеров и через Интернет.

Но как только он касается MSSQL Server, я получаю сообщение об ошибке «Не удалось войти в систему для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'". но этого не должно происходить, потому что никакие пользовательские токены не предназначены для анонимного входа.

Я сделал свою домашнюю работу и прочитал все о делегировании и олицетворении в ASP.NET, и я настроил делегирование: учетная запись FooUser имеет настройку имени участника-службы (я установил SPN в произвольную строку, правильно делаешь?) и помечен для делегирования в ADUC.

Наконец, в моей строке подключения включен SSPI, отключен пул подключений, и для сетевой библиотеки задано значение "dbmssocn".

Что еще я забыл?

1 Ответ

2 голосов
/ 21 мая 2011

Завершение конфигурации для делегирования для работы необходимо включить ограниченное делегирование:

  1. Открыть Active Directory - пользователи и компьютеры
  2. Найти учетную запись пользователя, которую IISВеб-сайт использует пул веб-приложений и дважды щелкните его
  3. Выберите параметр: Доверяйте этому пользователю возможность делегирования только указанным
    услугам.
  4. Makeубедитесь, что пользователь ограничен именем участника-службы, связанным со службой MSSQLSvc
  5. Перезапустите IIS

http://blogs.technet.com/b/askds/archive/2008/11/25/fun-with-the-kerberos-delegation-web-site.aspx

...