Аутентификация от веб-приложения ASP.NET к веб-службе ASP.NET к SQL Server - PullRequest
0 голосов
/ 21 марта 2012

У меня есть приложение ASP.NET (.NET 4.0), которое использует проверку подлинности Windows Forms. Это проверка подлинности в Active Directory и работает просто отлично.

Это веб-приложение вызывает веб-службу ASP.NET (.NET 4.0) на том же сервере. И приложение, и служба работают на IIS 6.

Веб-служба вызывает базу данных SQL Server 2005 в том же домене, используя «Integrated Security = SSPI» как часть строки соединения.

Я хочу, чтобы веб-служба и подключение к базе данных использовали учетные данные вошедшего в систему пользователя веб-приложения.

Я пробовал десятки комбинаций настроек с десятков веб-сайтов, но ничего не помогло. У меня второй день, и я никуда не попал.

Это вообще возможно?

В своей последней попытке я добавил этот код в веб-приложение перед вызовом веб-службы:

svc.Credentials = System.Net.CredentialCache.DefaultCredentials;

Но внутри службы User.Identity.Name возвращает значение пользователя, запустившего веб-сервер.

1 Ответ

1 голос
/ 21 марта 2012

То, что вы пытаетесь сделать, называется «делегирование». Это означает, что конечный пользователь проходит проверку подлинности на веб-сервере, а затем веб-сервер пытается использовать эти учетные данные для получения доступа к SQL Server. Но сервер SQL не доверяет веб-серверу, он только доверяет контроллеру домена. Таким образом, запрос не выполняется.

Помимо неработающего делегирования есть еще один недостаток. Поскольку каждый пользователь будет использовать разные учетные данные, соединения SQL больше не будут объединяться. Каждое удостоверение будет иметь свой собственный пул. Это было бы серьезной проблемой для ресурсов даже при небольшом количестве пользователей.

Для получения дополнительной информации, прочитайте эту статью MSDN .

TL; DR: отказаться от делегирования и перейти к аутентификации SQL.

...