Qual é a diferença entre Segurança Integrada = verdadeira e Segurança Integrada = SSPI?
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?
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
, esspi
(fortemente recomendado), que é equivalente atrue
.
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)
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;
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:
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
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
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.
- O que é sspi?
- Sintaxe Dos Textos De Ligação
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.
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.