it-swarm-es.com

¿Cuál es la diferencia entre Seguridad Integrada = Verdadera e Seguridad Integrada = SSPI?

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?

469
JD.

Según Microsoft son lo mismo.

Cuando false, ID de usuario y 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.

398
cptScarlet

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 se prefiere Integrated Security=SSPI;, ya que funciona con el proveedor SQLClient y OleDB.

Aquí está el conjunto completo de sintaxis según MSDN - Sintaxis de cadena de conexión (ADO.NET)

 ![Windows Auth Syntax

131
Pranav Singh

Usando la autenticación de Windows

Para conectarse al servidor de la 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 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 lanza 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

63
Asereware

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

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 ConvertValueToIntegratedSecurityInternal:

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

31
Pavel Biryukov

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

21
NITIN KAUSHIK

Permítanme comenzar con Integrated Security = false

falseEl ID de usuario y la contraseña se especifican en la cadena de conexión.
trueLas credenciales de la cuenta de Windows se usan 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
kudlatiger

Tenga en cuenta que las cadenas de conexión son específicas de what and how se están 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.

7
user1874524

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.

5
Amit Shishodia

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 maliciosa.

2
Sathishkumar