Разница между интегрированной безопасностью = True и интегрированной безопасностью = SSPI
У меня есть два приложения, которые используют Integrated Security. Один присваивает Integrated Security = true
в строке соединения, а остальные устанавливает Integrated Security = SSPI
.
В чем разница между SSPI
и true
в контексте Integrated Security?
Ответы
Ответ 1
Согласно Microsoft, это одно и то же.
Когда false
, идентификатор пользователя и пароль указываются в соединении. Когда true, текущие учетные данные учетной записи Windows используются для аутентификации.
Признанные значения: true
, false
, yes
, no
и sspi
(настоятельно рекомендуется), что эквивалентно true
.
Ответ 2
Integrated Security = true; не работает во всех поставщиках SQL, он генерирует исключение при использовании с поставщиком OleDb.
Таким образом, в основном Integrated Security = SSPI; является предпочтительным, поскольку работает как с SQLClient & поставщик OleDB.
Другие варианты:
![enter image description here]()
для получения дополнительной информации см. Синтаксис строки подключения (ADO.NET)
Ответ 3
Использование проверки подлинности 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: работа со строками подключения
Ответ 4
Многие вопросы получают ответы, если мы используем .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;
}
}
...
Ответ 5
Интегрированная безопасность = False: идентификатор пользователя и пароль указаны в соединении.
Integrated Security = true: для аутентификации используются текущие учетные данные учетной записи Windows.
Интегрированная безопасность = SSPI: это эквивалентно true.
Мы можем избежать атрибутов имени пользователя и пароля из строки подключения и использовать Integrated Security
Ответ 6
Позвольте мне начать с Integrated Security = false
false
Идентификатор пользователя и пароль указаны в строке подключения.
true
Учетные записи учетной записи Windows используются для аутентификации.
Признанные значения: true
, false
, yes
, no
и SSPI
.
Если указаны User ID
и Password
, а Integrated Security - true
, то User ID
и Password
будут игнорироваться, а Integrated Security будет использоваться
Ответ 7
Обратите внимание, что строки подключения относятся к тем, что и как, которые вы подключаете к данным. Они подключаются к одной базе данных, но в первую очередь используют поставщик данных .NET Framework для SQL Server. Integrated Security = True не будет работать для OleDb.
- Источник данных =; Начальный каталог = aspnetdb; Integrated Security = True
- Provider = SQLOLEDB; Источник данных =; Встроенная безопасность = SSPI; Начальный каталог = aspnetdb
В случае сомнений используйте подключения к данным Visual Studio Server Explorer.
Ответ 8
True действует только в том случае, если вы используете библиотеку .NET SqlClient. При использовании OLEDB это недопустимо.
Если SSPI поддерживается в обоих случаях, вы используете библиотеку .net SqlClient или OLEDB.
Ответ 9
С моей точки зрения,
Если вы не используете Integrated security = SSPI, вам нужно жестко указать имя пользователя и пароль в строке подключения, что означает "относительно небезопасно", почему, поскольку все сотрудники имеют доступ, даже бывший сотрудник может использовать эту информацию злонамеренно.