我有两个使用集成安全性的应用程序。一项分配 Integrated Security = true 在连接字符串中,以及其他集合 Integrated Security = SSPI.

有什么区别 SSPItrue 在集成安全的背景下?

有帮助吗?

解决方案

根据微软的它们是相同的东西。

  

当在连接中指定false,用户ID和密码。如果为true,当前的Windows帐户凭据用于验证。点击   识别的值为truefalseyesno,和sspi(强烈推荐),其等同于true

其他提示

Integrated Security=true;提供商使用时OleDb并不适用于所有SQL提供商合作,它抛出异常。

因此,基本上Integrated Security=SSPI;是因为与两个SQLClientOleDB提供商作品优选的。

下面是根据全套语法MSDN - 连接字符串语法(ADO.NET)

是Windows认证

要连接到数据库服务器,建议使用Windows身份验证,俗称集成安全。要指定Windows身份验证,您可以使用任何以下两个键 - 值对与数据提供者。对于SQL Server .NET Framework的:

 Integrated Security = true;
 Integrated Security = SSPI;

然而,只有第二作品与所述数据提供者的 .NET框架的OleDb 。如果您的ConnectionString例外设置Integrated Security = true被抛出。

要指定数据提供者的Windows身份验证。用于ODBC .NET框架,应该使用以下键值对。

Trusted_Connection = yes;

来源: MSDN:使用连接字符串 <工作/ p>

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

internal class DbConnectionOptions

...

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

...

修改2018年2月20日 现在,在对.NET核心,我们可以看到在github其开源! 搜索ConvertValueToIntegratedSecurityInternal方法:

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

集成安全=假:用户ID和密码被在连接中指定。 集成安全性=真:当前的Windows帐户凭据用于身份验证

集成安全性= SSPI:这是equivalant为true。

我们可以避免用户名和密码的连接字符串属性和使用集成安全性

让我开始Integrated Security = false

<强> false 用户ID和密码被连接字符串中指定。结果 的 true Windows帐户凭据用于身份验证。

识别的值为truefalseyesno,和SSPI

如果User IDPassword指定和集成安全性设置为true,然后User IDPassword将被忽略和集成安全将用于

请注意,连接字符串特定于 什么如何 您正在连接数据。它们连接到同一个数据库,但第一个是使用 SQL Server 的 .NET Framework 数据提供程序。Integrated Security=True 对 OleDb 不起作用。

  • 数据源=.;初始目录=aspnetdb;集成安全性=True
  • 提供程序=SQLOLEDB;数据源=.;集成安全性=SSPI;初始目录=aspnetdb

如有疑问,请使用 Visual Studio 服务器资源管理器数据连接。

真才有效,如果你使用.NET的SqlClient库。它使用OLEDB时无效。 其中SSPI被bvaid在两者或者您使用.NET的SqlClient库或OLEDB。

在我的观点来看,

如果你不使用集成的安全性= SSPI,那么你需要硬编码的连接字符串中的用户名和密码,这意味着“相对不安全”为什么,因为,所有的员工都访问甚至前雇员可能会恶意使用这些信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top