source significa que integrated for false data connectionstrings conexion cadena sql-server security connection-string database-security

sql server - significa - ¿Cuál es la diferencia entre Integrated Security=True y Integrated Security=SSPI?



integrated security=sspi que significa (9)

Tengo dos aplicaciones que usan Seguridad Integrada. Uno asigna Integrated Security = true en la cadena de conexión, y el otro establece Integrated Security = SSPI .

¿Cuál es la diferencia entre SSPI y true en el contexto de la seguridad integrada?


Desde mi punto de vista,

Si no usa Seguridad integrada = SSPI, debe codificar el nombre de usuario y la contraseña en la cadena de conexión, lo que significa "relativamente inseguro", porque todos los empleados tienen acceso, incluso el ex empleado podría usar la información de manera malintencionada.


Muchas preguntas obtienen respuestas si usamos .Net Reflector para ver el código real de SqlConnection :) true y sspi son los mismos:

internal class DbConnectionOptions ... internal bool ConvertValueToIntegratedSecurityInternal(string stringValue) { if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes")) { return true; } } ...

EDITAR 20.02.2018 ¡ Ahora en .Net Core podemos ver su código abierto en github! Busque el método de ConvertValueToIntegratedSecurityInternal:

https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs


Permítanme comenzar con la Integrated Security = false

El ID de usuario y la contraseña false se especifican en la cadena de conexión.
true credenciales de la cuenta de Windows se utilizan para la autenticación.

Los valores reconocidos son true , false , yes , no y SSPI .

Si se especifican el User ID y la Password y la seguridad integrada se establece en true , se ignorarán el User ID y la Password y se utilizará la seguridad integrada


Según Microsoft son lo mismo.

Cuando es false , el ID de usuario y la contraseña se especifican en la conexión. Cuando es verdadero, las credenciales actuales de la cuenta de Windows se utilizan para la autenticación.
Los valores reconocidos son true , false , yes , no y sspi (muy recomendado), que es equivalente a true .


Seguridad integrada = Falso: la identificación del usuario y la contraseña se especifican en la conexión. Seguridad integrada = verdadero: las credenciales actuales de la cuenta de Windows se usan para la autenticación.

Seguridad integrada = SSPI: esto es equivalente a verdadero.

Podemos evitar los atributos de nombre de usuario y contraseña de la cadena de conexión y utilizar la Seguridad Integrada


Tenga en cuenta que las cadenas de conexión son específicas de qué y cómo se está conectando a los datos. Estos se conectan a la misma base de datos, pero el primero es usar .NET Framework Data Provider para SQL Server. Integrated Security = True no funcionará para OleDb.

  • Fuente de datos =.; Catálogo inicial = aspnetdb; Seguridad integrada = Verdadero
  • Proveedor = SQLOLEDB; Fuente de datos =.; Seguridad integrada = SSPI; Catálogo inicial = aspnetdb

En caso de duda, utilice las conexiones de datos de Visual Studio Server Explorer.


True solo es válido si está utilizando la biblioteca .NET SqlClient. No es válido cuando se utiliza OLEDB. Donde SSPI es válido tanto en la biblioteca .net SqlClient como en la OLEDB.


Integrated Security=true; no funciona en todos los proveedores de SQL, lanza una excepción cuando se usa con el proveedor de OleDb .

Así que básicamente Integrated Security=SSPI; es preferible ya que funciona con el proveedor SQLClient y OleDB .

Aquí está el conjunto completo de sintaxis según Microsoft


Usando la autenticación de Windows

Para conectarse al servidor de la base de datos, se recomienda utilizar la autenticación de Windows, comúnmente conocida como seguridad integrada. Para especificar la autenticación de Windows, puede usar cualquiera de los siguientes dos pares clave-valor con el proveedor de datos. NET Framework para SQL Server:

Integrated Security = true; Integrated Security = SSPI;

Sin embargo, solo el segundo funciona con el proveedor de datos .NET Framework OleDb . Si establece Integrated Security = true para ConnectionString, se produce una excepción.

Para especificar la autenticación de Windows en el proveedor de datos. NET Framework para ODBC, debe utilizar el siguiente par clave-valor.

Trusted_Connection = yes;

Fuente: MSDN: Trabajar con cadenas de conexión