Строка подключения с использованием проверки подлинности Windows


134

Я создаю веб-сайт, но в базе данных использую проверку подлинности Windows.

Я знаю, что вы используете это для аутентификации SQL

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

Как мне изменить это для работы с проверкой подлинности Windows?

Ответы:


192

Замените имя пользователя и пароль на Integrated Security=SSPI;

Таким образом, строка подключения должна быть

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 

1
Я знаю, что вы можете установить определенного пользователя AD в пул приложений (веб-приложение). вы можете сделать то же самое для приложения Windows?
user384080 04

6
Persist Security Infoвероятно, не нужен: stackoverflow.com/a/2010059/1869660
Sphinxxx

@ Heads5150: Возможно ли, что в моем проекте нет строк подключения? я что-то упускаю. Я просмотрел все свое решение, чтобы найти строку подключения, как указано выше. я не мог найти ни одного. Тот, который я основал, был прокомментирован в веб-версии и веб-конфигурации. Я использую vs express 2013 с локальной базой данных.
Vini

19

Для правильного решения через много часов:

  1. Откройте файл конфигурации
  2. Измените строку подключения на следующую

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. Измените YOUR_SERVER_NAME на свое текущее имя сервера и сохраните
  2. Откройте диспетчер IIS
  3. Найдите имя пула приложений, который использует веб-сайт или веб-приложение.
  4. Щелкните правой кнопкой мыши и выберите Дополнительные настройки.
  5. В расширенных настройках в разделе « Модель процесса» измените удостоверение на настраиваемую учетную запись и добавьте данные администратора сервера, см. Прикрепленные изображения:

введите описание изображения здесь

Надеюсь, это поможет.


2
Это решение сработало для меня, но мне было интересно, как это изменение личности влияет на поведение приложения с точки зрения безопасности?
CesarB 05

Все действия, выполняемые процессом, будут выполняться с разрешениями / привилегиями этой учетной записи. Не предоставляйте больше разрешений, чем необходимо. Было бы целесообразно создать специальный сервисный аккаунт. Рекомендую также проверить DISA IIS и Windows Server STIG: public.cyber.mil/stigs/downloads
duct_tape_coder

12

Для подключения к базе данных sql server через проверку подлинности Windows в основном требуется, к какому серверу вы хотите подключиться, каково имя вашей базы данных, информацию о встроенной безопасности и имя поставщика.

В основном это работает:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

Установка в поле Integrated Security значения true означает, что вы хотите получить доступ к базе данных через аутентификацию Windows, если вы установите это поле false, аутентификация Windows не будет работать.

Он также работает по-разному в зависимости от того, какого провайдера вы используете.

  • SqlClient и Integrated Security = true; или IntegratedSecurity = SSPI; работает.

  • OleDb - это Integrated Security = SSPI;

  • Odbc это Trusted_Connection = yes;
  • OracleClient это Integrated Security = да;

Integrated Security = true вызывает исключение при использовании с поставщиком OleDb.


6

Это короче и работает

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

Сохранять информацию о безопасности не требуется

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.