Как сделать так, чтобы ASPNET распознавался как надежное соединение в SQL Server 2005 - PullRequest
0 голосов
/ 27 марта 2009

Вот ситуация. Я работаю над созданием нового сайта для доступа к старой базе данных. Это установка DoD, поэтому вокруг много защиты.

Текущее приложение написано на классическом ASP, VBScript и некотором javascript. Новая система ASP.NET.

Доступ к базе данных в старой системе означал попадание на сервер с вашими учетными данными (имя домена \ имя пользователя). Сейчас я пытаюсь проверить некоторые ранние разработки, которые я сделал. Когда я использовал Cassini (под VS2008), у меня не было проблем с доступом к базе данных, потому что ourdomain \ myusername зарегистрировано в экземпляре SQL Server как доверенное соединение. Из-за аспектов безопасности, которые я должен написать, Cassini больше не может служить тестовым сервером - мне приходится использовать IIS (у нас здесь есть устройства для чтения карт безопасности). Кассини не может с ними справиться.

Поэтому, когда я прошел через все проблемы с добавлением соответствующих учетных записей к администраторам на моем локальном компьютере, чтобы я мог отлаживать в VS2008 при использовании IIS, я попытался подключиться к базе данных, и мне было отказано, потому что MYPC \ ASPNET был не доверенное соединение.

Изменение существующей базы данных не может быть и речи. Жесткое кодирование имен пользователей и паролей для доступа к базе данных не может быть и речи.

Я спросил администратора базы данных, может ли он добавить MYPC \ ASPNET к группам доменов, чтобы SQL Server мог видеть его как доверенное соединение (поскольку MYDOMAIN \ MYNAME находился в группе, которая рассматривалась как доверенное соединение). Он говорит мне, что это технически невозможно.

В итоге будет три или четыре машины (моя, другой разработчик, возможный живой веб-сервер и будущий тестовый веб-сервер), чьи учетные записи ASPNET будут использовать наши два SQL-сервера (живой и тестовый) .

Что мне нужно сделать, чтобы существующий сервер SQL увидел меня как Друга, а не как Вра? Я посмотрел на олицетворение, но у меня сложилось впечатление, что он несовместим с нашей системой - бизнес-правила вызывают общую подпрограмму для создания объекта SqlConnection и его открытия (возможно, даже объекта SqlTransaction, чтобы использовать его), и этот объект используется для остальных бизнес-правил и уровня доступа к данным, пока это не будет сделано. Не похоже, что олицетворение сохранится после открытия SqlConnection (и передачи ByRef обратно в вызывающую подпрограмму)

Заранее спасибо за любой совет.

Ответы [ 4 ]

1 голос
/ 27 марта 2009

У вас есть два варианта:

  1. Запустите ваше веб-приложение в пуле приложений, настроенном для работы в контексте учетной записи домена
  2. Использовать олицетворение и настроить веб-приложение для использования только проверки подлинности Windows
0 голосов
/ 27 марта 2009

Как уже было предложено, вы должны использовать олицетворение.

Однако, если ваш SQL Server работает на компьютере, отличном от вашего веб-сервера, олицетворения будет недостаточно, поскольку учетные данные пользователя не будут делегированы на SQL Server (переход на сервер). В этом случае вам придется либо включить делегирование в AD, либо создать имя входа не в Windows на вашем SQL Server и использовать его вместо этого (это не будет работать, если ваш SQL Server фактически использует имя входа Windows для управления доступом к таблицам и т. Д.) .

0 голосов
/ 27 марта 2009

Похоже, вы хотите выдать себя за клиента, который правильно обращается к вашему веб-сайту? Вы пытались использовать олицетворение или предполагаете, что оно не будет работать?

Редактировать

Как указывает Альберт, олицетворение требует, чтобы пользователь проходил аутентификацию с использованием аутентификации Windows. Вы захотите отключить анонимный доступ и включить проверку подлинности Windows в инструменте управления IIS.

0 голосов
/ 27 марта 2009

Использование Олицетворение

...