База данных + аутентификация Windows + имя пользователя/Пароль?

Я всегда думал, что для соединения с SQL-сервером с помощью аутентификации Windows с явно указанными учетными данными, Вы должны LogonUser, Явиться олицетворением, затем соединиться.

Мне кажется, что эта ссылка предполагает, что возможно соединиться с SQL-сервером без всей этой стычки, просто путем определения "uid =...; pwd =..." в строке подключения. Я протестировал этот метод только, чтобы быть уверенным, что он не работает, и - о чудо - он не сделал. Если бы то сообщение в блоге не было на msdn.com, я просто отклонил бы его как разговор новичка, но это.

У кого-либо есть идея, что я пропускаю?

EDIT1: Многие респонденты неправильно поняли то, к чему я обращался. Вот скопировать/вставить того, о чем я говорил. Это не интегрировало SQL, ни это - олицетворение ASP.NET, сделанное IIS:

string sql4 = String.Format(
   @"Data Source={0};Integrated Security=SSPI;uid=;pwd=", server);     
// Database + Windows Authentication + Username/Password

22
задан John Saunders 24 July 2012 в 15:48
поделиться

4 ответа

В SQL Server есть два различных типа безопасности. «Аутентификация Windows» и «Аутентификация SQL Server». Когда вы видите uid и pwd, вы видите последнее. Uid в данном случае не является участником Windows - ОС ничего об этом не знает.

Итак, ответ на ваш вопрос: нет , вы не можете передать имя пользователя и пароль Windows в соединении. строка для входа в SQL Server.

30
ответ дан 29 November 2019 в 04:51
поделиться

It depends - if you connect from a command-line or Winforms app DIRECTLY to your SQL Server, you EITHER specify "Integrated Security=SSPI;" and then use your Windows credentials as logon credentials, OR you specify "user id=....;pwd=....." - but that's then a SQL logon - NOT your Windows logon.

You mention "impersonate and then connect" - that seems to indicate ASP.NET - that's a totally different story again. If you impersonate, then you're basically using your Windows credentials, e.g. the web server will "impersonate" you and log on as you (using your Windows credentials). In that case, again, no "uid=....;pwd=....." needs to be specified (if it is, it will be ignored).

As that link you mentioned clearly shows - if you can connect directly, and you specify "Integrated Security=SSPI;", then this takes precedence over any uid=...;pwd=.... which you might also specified and logs you in using your Windows credentials; those extra uid=...;pwd=.... pieces are ignored.

Marc

4
ответ дан 29 November 2019 в 04:51
поделиться

Данная статья и рассматриваемый вопрос относятся к безопасности SQL, а не к интегрированной безопасности. Вы можете передать учетные данные для пользователя SQL и войти в систему таким образом, если включена проверка подлинности SQL (смешанный режим). Если сервер SQL настроен на использование только встроенной безопасности, это не сработает. Также не сработает разрешение входа с использованием учетных данных Windows.

2
ответ дан 29 November 2019 в 04:51
поделиться

В нашем магазине мы обычно используем строки подключения, как вы описали. Без проблем. Но ваша база данных sql server должна быть настроена для использования безопасности sql, а не проверки подлинности Windows.

Пример строки подключения (из web.config) в нашем приложении выглядит так:

<connectionStrings>
<add name="ConfigurationData" connectionString="server=DevServer;
database=travel_expense_management_dv;uid=userid;pwd=password!;"
providerName="System.Data.SqlClient" />
</connectionStrings>

С другой стороны, гуру DBA для нашего shop настроил мне личную базу данных на главном сервере, которая интегрировала безопасность с моим входом в Windows. Мне не нужны были идентификаторы uid и pwd, потому что они брали информацию для аутентификации из контекста.

1
ответ дан 29 November 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: