Eu tenho dois aplicativos que usam a Segurança Integrada. Um atribui Integrated Security = true
na cadeia de conexão e o outro define Integrated Security = SSPI
.
Qual é a diferença entre SSPI
e true
no contexto da Segurança Integrada?
Eu tenho dois aplicativos que usam a Segurança Integrada. Um atribui Integrated Security = true
na cadeia de conexão e o outro define Integrated Security = SSPI
.
Qual é a diferença entre SSPI
e true
no contexto da Segurança Integrada?
Integrated Security = True
ouSSPI
não são iguais.Integrated Security=true;
não funciona em todos os provedores SQL, lança uma exceção quando usado com oOleDb
provedor. Então, basicamenteIntegrated Security=SSPI;
é o preferido, pois trabalha com oSQLClient
&OleDB
provider. Eu adicionei uma resposta para melhor esclarecimento.Respostas:
Segundo a Microsoft, eles são a mesma coisa.
fonte
Integrated Security=true;
não funciona em todos os provedores SQL, lança uma exceção quando usado com oOleDb
provedor.Então, basicamente
Integrated Security=SSPI;
é o preferido, pois trabalha com oSQLClient
&OleDB
provider.Aqui está o conjunto completo de sintaxes de acordo com o MSDN - Sintaxe de seqüência de conexão (ADO.NET)
fonte
Usando autenticação do Windows
Para conectar-se ao servidor de banco de dados, é recomendável usar a Autenticação do Windows, comumente conhecida como segurança integrada. Para especificar a autenticação do Windows, você pode usar qualquer um dos dois pares de valores-chave a seguir com o provedor de dados. NET Framework para SQL Server:
No entanto, apenas o segundo funciona com o provedor de dados .NET Framework OleDb . Se você definir
Integrated Security = true
para ConnectionString, uma exceção será lançada.Para especificar a autenticação do Windows no provedor de dados. NET Framework para ODBC, você deve usar o seguinte par de valores-chave.
Fonte: MSDN: Trabalhando com seqüências de conexão
fonte
Muitas perguntas obtêm respostas se usarmos
.Net Reflector
para ver o código real deSqlConnection
:)true
esspi
são as mesmas:EDIT 20.02.2018 Agora, no .Net Core, podemos ver seu código aberto no github! Procure pelo método ConvertValueToIntegratedSecurityInternal:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
fonte
ConvertValueToIntegratedSecurityInternal
. Essa propriedade é usada somente quando provedor está noSqlClient
modo emSqlClient
,SSPI
etrue
são os mesmos, mas não quando o cliente éOleDb
ouOracleClient
. Eu esclarei que no stackoverflow.com/a/23637478/704008 com referência de msdnSegurança Integrada = Falso: ID do Usuário e Senha são especificados na conexão. Segurança Integrada = true: as credenciais atuais da conta do Windows são usadas para autenticação.
Segurança Integrada = SSPI: isso é equivalente a verdadeiro.
Podemos evitar os atributos de nome de usuário e senha da cadeia de conexão e usar o Integrated Security
fonte
Deixe-me começar com
Integrated Security = false
false
O ID do usuário e a senha são especificados na cadeia de conexão.true
As credenciais da conta do Windows são usadas para autenticação.Os valores reconhecidos são
true
,false
,yes
,no
, eSSPI
.Se
User ID
ePassword
são especificados e segurança integrada está definida paratrue
, em seguida,User ID
ePassword
será ignorado e Segurança Integrada será usadofonte
Observe que as cadeias de conexão são específicas para o que e como você está se conectando aos dados. Eles estão se conectando ao mesmo banco de dados, mas o primeiro está usando o .NET Framework Data Provider para SQL Server. Segurança Integrada = True não funcionará para o OleDb.
Em caso de dúvida, use as conexões de dados do Visual Studio Server Explorer.
fonte
True é válido apenas se você estiver usando a biblioteca .NET SqlClient. Não é válido ao usar OLEDB. Onde SSPI é bvaid, você está usando a biblioteca .net SqlClient ou OLEDB.
fonte
No meu ponto de vista,
Se você não usar o Integrated security = SSPI, precisará codificar o nome de usuário e a senha na cadeia de conexão, o que significa "relativamente inseguro" porque, porque todos os funcionários têm acesso, mesmo que ex-funcionários possam usar as informações de maneira maliciosa.
fonte