У меня есть два приложения, которые используют встроенную безопасность. Один назначает Integrated Security = true
в строке подключения, а другой устанавливает Integrated Security = SSPI
.
В чем разница между SSPI
и true
в контексте интегрированной безопасности?
Integrated Security = True
илиSSPI
не одинаковы.Integrated Security=true;
не работает во всех провайдерах SQL, он генерирует исключение при использовании сOleDb
провайдером. Так что в основномIntegrated Security=SSPI;
предпочтительнее, так как работает как с поставщиком, такSQLClient
и сOleDB
поставщиком. Я добавил ответ для лучшего разъяснения.Ответы:
По словам Microsoft , это одно и то же.
источник
Integrated Security=true;
не работает во всех провайдерах SQL, он генерирует исключение при использовании сOleDb
провайдером.Так что в основном
Integrated Security=SSPI;
предпочтительнее, так как работает как с поставщиком, такSQLClient
и сOleDB
поставщиком.Вот полный набор синтаксисов в соответствии с MSDN - Синтаксис строки подключения (ADO.NET)
источник
Использование аутентификации Windows
Для подключения к серверу базы данных рекомендуется использовать проверку подлинности Windows, широко известную как встроенная защита. Чтобы указать аутентификацию Windows, вы можете использовать любую из следующих двух пар ключ-значение с поставщиком данных. NET Framework для SQL Server:
Однако только второй работает с поставщиком данных .NET Framework OleDb . Если вы установили
Integrated Security = true
ConnectionString, выдается исключение.Чтобы указать проверку подлинности Windows в поставщике данных. NET Framework для ODBC, вы должны использовать следующую пару ключ-значение.
Источник: MSDN: Работа со строками подключения
источник
Многие вопросы получают ответы, если мы используем,
.Net Reflector
чтобы увидеть фактический кодSqlConnection
:)true
иsspi
одинаковы:РЕДАКТИРОВАТЬ 20.02.2018 Теперь в .Net Core мы можем увидеть его с открытым исходным кодом на GitHub! Найдите метод ConvertValueToIntegratedSecurityInternal:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
источник
ConvertValueToIntegratedSecurityInternal
. Это свойство используется только в том случае, если поставщикSqlClient
так и естьSqlClient
,SSPI
иtrue
одинаковы, но не когда клиентOleDb
илиOracleClient
. Я уточнил, что в stackoverflow.com/a/23637478/704008 со ссылкой наIntegrated Security = False: идентификатор пользователя и пароль указываются в соединении. Integrated Security = true: для аутентификации используются текущие учетные данные Windows.
Комплексная безопасность = SSPI: это эквивалентно истине.
Мы можем избежать атрибутов имени пользователя и пароля из строки подключения и использовать встроенную защиту
источник
Позвольте мне начать с
Integrated Security = false
false
Идентификатор пользователя и пароль указываются в строке подключения.true
Учетные данные Windows используются для аутентификации.Признанные значения
true
,false
,yes
,no
, иSSPI
.Если
User ID
иPassword
указаны, и для Integrated Security установлено значениеtrue
, тогдаUser ID
иPassword
будут игнорироваться, и будет использоваться Integrated Security.источник
Обратите внимание, что строки подключения зависят от того, что и как вы подключаетесь к данным. Они подключаются к одной и той же базе данных, но первый использует поставщик данных .NET Framework для SQL Server. Integrated Security = True не будет работать для OleDb.
В случае сомнений используйте подключения к данным в Visual Studio Server Explorer.
источник
Значение true только в том случае, если вы используете библиотеку .NET SqlClient. Недействительно при использовании OLEDB. Где SSPI bvaid в обоих случаях вы используете библиотеку .net SqlClient или OLEDB.
источник
С моей точки зрения,
Если вы не используете Integrated security = SSPI, то вам нужно жестко указать имя пользователя и пароль в строке подключения, что означает «относительно небезопасный», потому что, поскольку все сотрудники имеют доступ, даже бывший сотрудник мог использовать информацию злонамеренно.
источник