Рядок підключення за допомогою автентифікації 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?
користувач384080

6
Persist Security Infoймовірно , не потрібно: stackoverflow.com/a/2010059/1869660
Sphinxxx

@ heads5150: Чи можливо, що в моєму проекті немає рядків підключення? я щось пропускаю Я шукав все своє рішення, щоб знайти рядок з'єднання, як зазначено вище. я не міг знайти жодного. Те, що я створив, було прокоментовано у веб-релізі та веб-налаштуваннях. Я використовую vs Express 2013 із локальним db.
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

Усі дії, які виконує процес, виконуватимуться з дозволами / привілеями цього облікового запису. Не надайте більше дозволів, ніж потрібно. Спеціальний обліковий запис служби буде доцільним. Рекомендую перевірити також DISA IIS та Windows Server STIG: public.cyber.mil/stigs/downloads
duct_tape_coder

12

Для підключення до бази даних сервера sql через автентифікацію Windows в основному потрібен сервер, який ви хочете підключити, яке ім'я вашої бази даних, інформація про інтегровану безпеку та ім’я постачальника.

В основному це працює:

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

Налаштування поля інтегрованої безпеки true означає, що ви хочете отримати базу даних за допомогою автентифікації Windows, якщо встановити це поле помилкової автентифікації Windows, не буде працювати.

Він також працює по-різному, залежно від того, якого постачальника ви використовуєте.

  • SqlClient і інтегрована безпека = true; або IntegratedSecurity = SSPI; працює.

  • OleDb це інтегрована безпека = SSPI;

  • Odbc це Trusted_Connection = так;
  • OracleClient це інтегрована безпека = так;

Інтегрована безпека = 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.