¿Cuál es la diferencia entre Integrated Security = True y Integrated Security = SSPI?


Tengo dos aplicaciones que utilizan 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?

Author: JohnOsborne, 2009-08-05

9 answers

Según Microsoft son la misma cosa.

Cuando false, el ID de usuario y la contraseña se especifican en la conexión. Cuando true, 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 recomendable), que es equivalente a true.

 374
Author: cptScarlet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-20 02:44:22

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

Así que básicamente se prefiere Integrated Security=SSPI; ya que funciona con ambos SQLClient & OleDB proveedor.

Aquí está el conjunto completo de sintaxis de acuerdo con MSDN - Connection String Syntax (ADO.NET)

![Sintaxis de Autenticación de Windows

 109
Author: Pranav Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-06 11:27:37

Uso de la Autenticación de Windows

Para conectarse al servidor de base de datos se recomienda usar la autenticación de Windows, comúnmente conocida como seguridad integrada. Para especificar la autenticación de Windows, puede utilizar cualquiera de los dos pares clave-valor siguientes 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 una excepción es lanzar.

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

Trusted_Connection = yes;

Source: MSDN: Trabajar con cadenas de conexión

 59
Author: Asereware,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-13 10:38:47

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

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! Buscar convertvaluetointegratedsecuritymétodo interno:

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

 30
Author: Pavel Biryukov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-20 14:15:35

Integrated Security = False : El ID de usuario y la contraseña se especifican en la conexión. Seguridad integrada = true: las credenciales actuales de la cuenta de Windows se utilizan para la autenticación.

Integrated Security = SSPI : esto es equivalente a true.

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

 21
Author: NITIN KAUSHIK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 08:13:38

Permítanme comenzar con Integrated Security = false

false El ID de usuario y la contraseña se especifican en la cadena de conexión.
true Las 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 User ID y Password y la Seguridad integrada se establece en true, entonces se ignorarán User ID y Password y se utilizará la Seguridad integrada

 13
Author: kudlatiger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-10 04:26:41

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

  • Fuente de datos=.; Initial Catalog = aspnetdb; Integrated Security=True
  • Provider=SQLOLEDB;Data Source=.; Integrated Security=SSPI; Initial Catalog = aspnetdb

En caso de duda, utilice Visual Studio Conexiones de Datos del Explorador de Servidores.

 7
Author: user1874524,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-02 23:46:32

True solo es válido si está utilizando la biblioteca.NET SqlClient. No es válido cuando se utiliza OLEDB. Donde SSPI es bvaid en ambos, está utilizando la biblioteca. net SqlClient u OLEDB.

 5
Author: Amit Shishodia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-09 12:54:45

En mi punto de vista,

Si no usa Integrated security=SSPI,entonces necesita codificar el nombre de usuario y la contraseña en la cadena de conexión, lo que significa "relativamente inseguro", porque porque, todos los empleados tienen acceso, incluso los ex empleados podrían usar la información maliciosamente.

 2
Author: Sathishkumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-02 08:57:24