Разница между интегрированной безопасностью = 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, вам нужно жестко указать имя пользователя и пароль в строке подключения, что означает "относительно небезопасно", почему, поскольку все сотрудники имеют доступ, даже бывший сотрудник может использовать эту информацию злонамеренно.