В чем разница между Integrated Security = True и Integrated Security = SSPI?
у меня есть два приложения, которые используют интегрированную систему безопасности. Один назначает Integrated Security = true
в строке подключения, а другие наборы Integrated Security = SSPI
.
в чем разница между SSPI
и true
в контексте комплексной безопасности?
9 ответов
по данным Microsoft это одно и то же.
, когда
false
, ID пользователя и пароль указаны в соединении. При значении true для проверки подлинности используются текущие учетные данные учетной записи Windows.
Распознанные значения:true
,false
,yes
,no
иsspi
(настоятельно рекомендуется), что эквивалентноtrue
.
Integrated Security=true;
не работает во всех поставщиках SQL, он создает исключение при использовании с OleDb
провайдер.
так что в принципе Integrated Security=SSPI;
предпочтительнее, так как работает с SQLClient
& OleDB
провайдер.
вот полный набор синтаксисов в соответствии с MSDN-синтаксис строки подключения (ADO.NET)
Использование Проверки Подлинности Windows
для подключения к серверу баз данных рекомендуется использовать проверку подлинности Windows, обычно известную как встроенная безопасность. Чтобы указать проверку подлинности Windows, можно использовать любую из следующих двух пар ключ-значение с поставщиком данных. NET Framework для SQL Server:
Integrated Security = true;
Integrated Security = SSPI;
однако только второй работает с поставщиком данных .NET Framework OleDb. Если вы установите Integrated Security = true
для ConnectionString создается исключение.
для указания проверки подлинности Windows в поставщике данных. NET Framework для ODBC следует использовать следующую пару ключ-значение.
Trusted_Connection = yes;
источник: MSDN: работа со строками подключения
многие вопросы получают ответы, если мы используем .Net Reflector
чтобы увидеть фактический код SqlConnection
:)
true
и sspi
то же самое:
internal class DbConnectionOptions
...
internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
{
return true;
}
}
...
изменить 20.02.2018 Теперь в .Net Core мы можем увидеть его с открытым исходным кодом на github! Поиск ConvertValueToIntegratedSecurityinternal метод:
Integrated Security = False: идентификатор пользователя и пароль указаны в соединении. Integrated Security = true: текущие учетные данные учетной записи Windows используются для проверки подлинности.
Integrated Security = SSPI: это эквивалентно true.
мы можем избежать атрибутов имени пользователя и пароля из строки подключения и использовать интегрированную безопасность
позвольте мне начать с Integrated Security = false
false
идентификатор пользователя и пароль в строке подключения.true
учетные данные учетной записи Windows используются для проверки подлинности.
признан значения true
, false
, yes
, no
и SSPI
.
если User ID
и и комплексной безопасности true
, потом User ID
и Password
будет проигнорировано и интегрировано Безопасность будет использоваться
обратите внимание, что строки подключения относятся к что и как вы подключаетесь к данным. Они подключаются к той же базе данных, но первый использует поставщик данных .NET Framework для SQL Server. Интегрированная безопасность=True не будет работать для OleDb.
- Источник Данных=.; Initial Catalog=aspnetdb; Integrated Security=True
- Provider=SQLOLEDB; источник данных=.;Комплексная безопасность=SSPI;начальная Каталог=aspnetdb
Если вы сомневаетесь, используйте подключения к данным Visual Studio Server Explorer.
- что это sspi?
- Синтаксис Строк Подключения
True допустимо только при использовании библиотеки .NET SqlClient. Это недопустимо при использовании OLEDB. Где SSPI bvaid в обоих вы используете библиотеку .net SqlClient или OLEDB.
с моей точки зрения,
Если вы не используете Integrated security=SSPI, то вам нужно жестко закодировать имя пользователя и пароль в строке подключения, что означает "относительно небезопасно", потому что все сотрудники имеют доступ, даже бывший сотрудник может использовать информацию злонамеренно.