Qual é a diferença entre Segurança Integrada = verdadeira e Segurança Integrada = SSPI?

Tenho duas aplicações que usam Segurança Integrada. Um atribui Integrated Security = true na cadeia de ligação, e os outros conjuntos Integrated Security = SSPI.

Qual é a diferença entre SSPI e true no contexto da Segurança Integrada?

Author: JohnOsborne, 2009-08-05

9 answers

De acordo com Microsoft eles são a mesma coisa.

Quando {[[0]}, o ID do utilizador e a senha são indicados na ligação. Quando verdadeiro, as credenciais atuais da Conta do Windows são usadas para Autenticação.
Os valores reconhecidos são:true, false, yes, no, e sspi (fortemente recomendado), que é equivalente a true.

 374
Author: cptScarlet, 2018-06-20 02:44:22

Integrated Security=true; não funciona em todos os provedores de SQL, ele lança uma exceção quando usado com o provedor OleDb.

Então basicamente Integrated Security=SSPI; é preferido desde que trabalha com ambos SQLClient & OleDB provedor.

Aqui está o conjunto completo de sintaxe de acordo com MSDN - sintaxe de cadeia de ligação (ADO.NET)

![Windows Auth Syntax

 109
Author: Pranav Singh, 2018-09-06 11:27:37

Usar A Autenticação Do Windows

Para se ligar ao servidor de bases de dados, recomenda-se a utilização da autenticação do Windows, vulgarmente conhecida como segurança integrada. Para especificar a autenticação do Windows, você pode usar qualquer um dos seguintes dois pares chave-valor com o provedor de dados. Plataforma líquida para o servidor de SQL:

 Integrated Security = true;
 Integrated Security = SSPI;

No entanto, apenas o segundo trabalha com o fornecedor de dados . NET Framework OleDb . Se você definir Integrated Security = true para Conectionstring uma exceção é iniciar.

Para indicar a autenticação do Windows no fornecedor de dados. Framework NET para ODBC, você deve usar o seguinte par de valores-chave.

Trusted_Connection = yes;

Fonte: MSDN: trabalhar com cadeias de ligação

 59
Author: Asereware, 2013-12-13 10:38:47

Muitas perguntas recebem respostas se usarmos .Net Reflector para ver o código real de SqlConnection:) true e sspi são os mesmos:

internal class DbConnectionOptions

...

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

...

Editar 20.02.2018 Agora no núcleo. Net podemos ver seu código aberto no github! Procurar pelo método interno da Segurança Interna Convertvaluetointegrada:

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

 30
Author: Pavel Biryukov, 2018-02-20 14:15:35

Integrated Security = False: User ID and Password are specified in the connection. Integrated Security = true : the current Windows account credentials are used for authentication.

Segurança Integrada = SSPI: isto é equivalente ao true.

Podemos evitar os atributos de utilizador e senha a partir do texto de ligação e usar a segurança integrada

 21
Author: NITIN KAUSHIK, 2013-10-23 08:13:38
Deixa-me começar com ... Integrated Security = false

false O ID do utilizador e a senha são indicados no texto de ligação.
true as credenciais da conta do Windows são usadas para Autenticação.

Valores Reconhecidos são true, false, yes, no, e SSPI.

SE User ID e Password forem especificados e a segurança integrada for definida para {[[2]}, então User ID e Password serão ignorados e será utilizada a segurança integrada

 13
Author: kudlatiger, 2012-12-10 04:26:41

Lembre-se que as cadeias de ligação são específicas de o que e como está a ligar-se aos dados. Estes estão se conectando ao mesmo banco de dados, mas o primeiro está usando.NET Framework Data Provider para SQL Server. Segurança integrada = True não vai funcionar para OleDb.

  • Fonte De Dados=.;Catálogo inicial = aspnetdb;Segurança Integrada=True
  • Provider=SQLOLEDB; Data Source=.; Integrated Security=SSPI; Initial Catalog=aspnetdb

Em caso de dúvida, utilize o Visual Ligações De Dados Do Studio Server Explorer.

 7
Author: user1874524, 2014-04-02 23:46:32

O True só é válido se estiver a usar a biblioteca.net SqlClient. Não é válido ao usar OLEDB. Onde o SSPI é bvaid em ambos os casos você está usando. net SqlClient library ou OLEDB.

 5
Author: Amit Shishodia, 2015-01-09 12:54:45

No meu ponto de vista,

Se você não usar Segurança Integrada=SSPI,então você precisa codificar o nome de usuário e senha na cadeia de conexão o que significa "relativamente inseguro" porque, todos os funcionários têm o acesso mesmo ex-empregado poderia usar a informação maliciosamente.

 2
Author: Sathishkumar, 2017-10-02 08:57:24