当前位置:  开发笔记 > 后端 > 正文

Integrated Security = True和Integrated Security = SSPI有什么区别?

如何解决《IntegratedSecurity=True和IntegratedSecurity=SSPI有什么区别?》经验,为你挑选了8个好方法。

我有两个使用集成安全性的应用程序.一个分配Integrated Security = true连接字符串,另一个分配Integrated Security = SSPI.

是什么区别SSPI,并true在集成安全性的情况下?



1> 小智..:

据微软称,他们是一回事.

何时false,在连接中指定了用户ID和密码.如果为true,则使用当前Windows帐户凭据进行身份验证.
识别的值为true,false,yes,no,和sspi(强烈推荐),这相当于true.


最初,我认为"True"使用NTLM和"SSPI"使用Kerberos有所不同,但它们现在可以互换.
@RodneyFoley对不起,我的测试证实这个答案是正确的,你的评论不是.也许它曾经这样工作过一次,但现在还没有,并且您无法提供任何支持您的意见的Microsoft文档的参考.
没有检查最后的评论,但如果是真的,应该作为答案,但不是评论
同意柯克.SSPI指定时忽略用户/密码 - .net 4.0,SQL Server 2012.
@ZéCarlos好的,明白了.不知何故,这是最高票数的接受答案:).我添加了相同澄清的答案
@RodneyFoley我使用错误的用户名和密码使用SSPI,但它并不关心并在net4.0中成功连接.这是预期的结果吗?
因此,如果他们"是同一件事",为什么SSPI"强烈推荐"而不是"真实"或"是"?这就是我提出这个问题的原因......
@ZéCarlos他们不一样,请参阅/sf/ask/17360801/

2> Pranav Singh..:

Integrated Security=true;在所有SQL提供程序中都不起作用,它在与OleDb提供程序一起使用时会引发异常.

所以基本上Integrated Security=SSPI;是首选,因为SQLClientOleDB提供者兼容.

这是根据MSDN的完整语法集- 连接字符串语法(ADO.NET)

![Windows Auth语法



3> Asereware..:

使用Windows身份验证

建议使用Windows身份验证(通常称为集成安全性)连接到数据库服务器.要指定Windows身份验证,可以将以下两个键值对中的任何一个与数据提供程序一起使用.用于SQL Server的.NET Framework:

 Integrated Security = true;
 Integrated Security = SSPI;

但是,只有第二个适用于数据提供程序.NET Framework OleDb.如果Integrated Security = true为ConnectionString 设置,则抛出异常.

在数据提供程序中指定Windows身份验证.在.NET Framework for ODBC中,您应该使用以下键值对.

Trusted_Connection = yes;

来源:MSDN:使用连接字符串



4> Pavel Biryuk..:

如果我们.Net Reflector用来查看SqlConnection:) 的实际代码true并且sspi是相同的,那么很多问题都会得到答案:

internal class DbConnectionOptions

...

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

...

编辑20.02.2018 现在在.Net Core我们可以在github上看到它的开源!搜索ConvertValueToIntegratedSecurityInternal方法:

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


这部分代码仅是一种情况下的属性,这种情况可以通过名称“ ConvertValueToIntegratedSecurityInternal”来解释。仅当提供者为SqlClient时才使用该属性,因此在SqlClient,SSPI和true中是相同的,而当客户端为OleDb或OracleClient时则不使用。我已经澄清了在/sf/ask/17360801/中具有msdn参考

5> 小智..:

Integrated Security = False:在连接中指定用户ID和密码.Integrated Security = true:当前Windows帐户凭据用于身份验证.

集成安全性= SSPI:这与真实相当.

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



6> kudlatiger..:

让我先谈谈 Integrated Security = false

false 用户ID和密码在连接字符串中指定.
true Windows帐户凭据用于身份验证.

可识别的值为true,false,yes,no,和SSPI.

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



7> 小智..:

需要注意的是连接字符串特定于什么如何您要连接到的数据.它们连接到同一个数据库,但第一个是使用.NET Framework Data Provider for SQL Server.Integrated Security = True对OleDb不起作用.

Data Source = .; Initial Catalog = aspnetdb; Integrated Security = True

Provider = SQLOLEDB; Data Source = .; Integrated Security = SSPI; Initial Catalog = aspnetdb

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

什么是sspi?

连接字符串语法



8> 小智..:

True仅在您使用.NET SqlClient库时才有效.使用OLEDB时无效.无论您使用.net SqlClient库还是OLEDB,SSPI都是bvaid.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有