集成安全= True和集成安全= SSPI之间的区别

我有两个使用集成安全性的应用程序。 一个在连接string中分配Integrated Security = true ,另一个设置Integrated Security = SSPI

在综合安全的背景下, SSPItrue的区别是什么?

据微软说,他们是同样的事情。

如果为false ,则在连接中指定用户标识和密码。 如果为true,则使用当前的Windows帐户凭据进行身份validation。
认可的值是truefalseyesno ,和sspi (强烈推荐),这相当于是true

集成安全性= true; 在所有SQL提供程序中都不起作用,所以在与OleDb提供程序一起使用时会引发exception。

所以基本上集成安全= SSPI; 因为SQLClientOleDB提供者都是首选。

其他选项是: 在这里输入图像描述

有关更多信息,请参阅: 连接string语法(ADO.NET)

使用Windows身份validation

build议连接到数据库服务器使用Windows身份validation,通常称为集成安全性。 要指定Windows身份validation,可以将以下两个键值对中的任何一个与数据提供者一起使用。 NET Framework for SQL Server:

  Integrated Security = true; Integrated Security = SSPI; 

但是,只有第二个数据提供程序.NET Framework OleDb一起使用 。 如果您为ConnectionString设置Integrated Security = true ,则会引发exception。

在数据提供者中指定Windows身份validation。 .NET Framework for ODBC,则应使用以下键 – 值对。

 Trusted_Connection = yes; 

来源: MSDN:使用连接string

如果我们使用.Net Reflector来查看SqlConnection的实际代码,许多问题都会得到答案: truesspi是相同的:

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

集成安全性= False:用户标识和密码在连接中指定。 集成安全性= true:当前的Windows帐户凭证用于身份validation。

集成安全= SSPI:这等同于真实。

我们可以避免连接string的用户名和密码属性,并使用集成安全性

让我从Integrated Security = false

false在连接string中指定用户ID和密码。
true Windows帐户凭证用于身份validation。

认可的价值观是truefalseyesno ,和SSPI

如果指定User IDPassword ,并且集成安全性设置为true ,那么将忽略User IDPassword并使用集成安全性

请注意,连接string是特定于什么以及如何连接到数据。 这些连接到相同的数据库,但首先是使用SQL Server的.NET Framework数据提供程序。 集成安全性= True对OleDb不起作用。

  • 数据源=;初始目录= aspnetdb;集成安全性= True
  • Provider = SQLOLEDB; Data Source = .;集成安全性= SSPI;初始目录= aspnetdb

如有疑问,请使用Visual Studio Server Explorer数据连接。

  • 什么是sspi ?
  • 连接string语法

如果您使用.NET SqlClient库,则True才有效。 使用OLEDB时无效。 SSPI在你使用.net SqlClient库或OLEDB的地方都可以。

在我看来,

如果你不使用集成安全性= SSPI,那么你需要在连接string中对用户名和密码进行硬编码,这意味着“相对不安全”,因为所有员工都有权访问,甚至前员工也可以恶意使用这些信息。