Использует ли ADO в asp.net веб-приложение всегда использует учетную запись службы IIS для подключения к SQL Server?

#asp.net #sql-server #ado.net

#asp.net #sql-сервер #ado.net #sql-server

Вопрос:

У меня есть ASP.NET веб-приложение, в котором я использую ado sql-соединение для подключения к базе данных на SQL-сервере. Строка подключения ado предоставляется с именем пользователя, который имеет достаточные права для чтения / записи в базу данных. Изначально я разместил веб-приложение на его собственном веб-сайте IIS, используя его собственный пул приложений, и все работало нормально.

Однако сейчас я пытаюсь включить веб-приложение в уже существующий веб-сайт. Казалось, что все работает нормально, пока я не попробовал любую функциональность, которая требовала вставки или обновления базы данных. Оказывается, у пользователя, подключающегося к БД, не было достаточных разрешений. Сочтя это странным, я провел некоторое исследование и нашел сообщение на форуме, в котором говорилось, что учетной записи службы веб-сайта IIS необходимы разрешения на чтение / запись в базе данных SQL, чтобы приложение могло выполнить ВСТАВКУ / ОБНОВЛЕНИЕ. Это правда?

Я протестировал это, и да, действительно, это сработало, только с учетной записью Application Pool Identity. Детали моего сценария следующие:

  • У первого веб-сайта IIS веб-приложения был идентификатор пула приложений, который выполнялся в сетевой службе, у которой уже был логин для SQL SERVER

  • Уже существующее удостоверение пула приложений веб-сайта выполняется под учетной записью домена. На этом сайте уже запущено другое веб-приложение, которое подключается к той же базе данных с помощью LINQ (разработанного кем-то другим). Я относительно новичок в веб-разработке и лучше знаком с ADO, поэтому выбрал именно этот маршрут.

  • Учетная запись домена, упомянутая выше, ранее не имела сопоставления входа в систему SQL Server / user. Я настроил его как dbowner, и viola, новое веб-приложение, работало под существующим веб-сайтом.

Хотя я нашел способ, как это работает, мы бы предпочли не создавать SQL-логин для этой учетной записи удостоверения. Мы хотим, чтобы логин, указанный в ADO SqlConnection веб-приложения, был тем, к которому можно подключиться на самом деле, потому что разве не в этом суть? Кроме того, тот факт, что другое веб-приложение, использующее LINQ, может нормально подключаться к тому же веб-сайту, наводит нас на мысль, что это возможно. У кого-нибудь из экспертов есть два цента, чтобы предложить по этому вопросу?

Ответ №1:

Проверка подлинности SQL Server Windows используется, когда в строке подключения используется Integrated Security . Если режим проверки подлинности — проверка подлинности SQL Server (логин / пароль), то не имеет значения, какая учетная запись используется.

Это работает путем проверки учетной записи Windows (домена) процесса, устанавливающего соединение ADO.

В ASP.В Net web app задействованы три учетные записи — учетная запись службы IIS, учетная запись безопасности каталога веб-сайтов, учетная запись пула приложений. При подключении к SQL Server процесс, выполняющийся ASP.NET web apps — это w3wp.exe веб-приложения, которые запускаются под Application Pool, Identity учетной записью. Для этой учетной записи вам необходимо настроить доступ.

Комментарии:

1. Прошу прощения, я действительно хотел сказать Пул приложений, идентификационная учетная запись. Однако эта учетная запись не имела доступа к веб-приложению с использованием LINQ, но имеет доступ к новой учетной записи с использованием ADO?

2. @alex Я немного отредактировал ответ. Используют ли оба приложения одну и ту же строку подключения? тот же пул приложений?

3. да, оба приложения используют проверку подлинности SQL Server. Однако один из них настроен с помощью LINQ, другой — с помощью ADO. Приложение, использующее ADO, не может выполнить ВСТАВКУ / ОБНОВЛЕНИЕ, если идентификатор пула приложений не добавлен в SQL Server с правильными разрешениями. Однако приложение, использующее LINQ, никогда не нуждалось в таком требовании.

4. То же самое connection string ? Я сомневаюсь, что ваше приложение ADO использует аутентификацию SQL Server, если изменение идентификатора пула приложений или связанной с ним безопасности может повлиять на разрешения.

5. «Источник данных: сервер; Начальный каталог: db; Пользователь: идентификатор имени; Пароль: pw» — вот как выглядит моя строка подключения. Я думал, что мне нужно указать либо доверенное соединение, либо интегрированную безопасность, чтобы использовать проверку подлинности Windows?