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

查看原始版本

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

在集成安全性方面,SSPItrue有什么区别?

所有回答
  • Flora Lee #1

    根据Microsoft他们是同一回事

    When false, User ID and Password are specified in the connection. When true, the current Windows account credentials are used for authentication.
    Recognized values are true, false, yes, no, and sspi (strongly recommended), which is equivalent to true.

  • Les Lee #2

    Integrated Security=true;不适用于所有的SQL提供程序,它在与OleDb提供程序一起使用时引发异常。

    因此,基本上Integrated Security=SSPI;是首选,因为它同时与SQLClient&;OleDB提供程序工作

    这是根据MSDN - Connection String Syntax (ADO.NET)的完整语法集

    ![Windows Auth Syntax

  • Agatha Lee #3

    Using Windows Authentication

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

     Integrated Security = true;
     Integrated Security = SSPI;
    

    但是,只有第二个可以与数据提供程序.NET Framework OleDb配合使用。如果为ConnectionString设置了Integrated Security = true,则会引发异常

    在数据提供程序中指定Windows身份验证。netframeworkforodbc,应该使用以下键值对

    Trusted_Connection = yes;
    

    资料来源:MSDN: Working with Connection Strings

  • Cheryl Lee #4

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

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

    EDIT 20.02.2018 现在在.Net Core中,我们可以在github上看到它的开源! 搜索ConvertValueToIntegratedSecurity内部方法:

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

  • Louis Lee #5

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

    集成安全=SSPI:这相当于true。

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

  • Joyce Lee #6

    让我从Integrated Security = false开始

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

    可识别的值为truefalseyesnoSSPI

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

  • Berg Lee #7

    请注意,连接字符串特定于要连接到数据的whathow。这些数据库连接到同一个数据库,但第一个数据库使用.NETFrameworkDataProviderforSQLServer。Integrated Security=True对OleDb不起作用

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

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

  • Henry Lee #8

    只有在使用.NET SqlClient库时,True才有效。使用OLEDB时无效。 其中SSPI是bvaid,要么使用.net SqlClient库,要么使用OLEDB

  • Page Lee #9

    在我看来

    如果不使用Integrated security=SSPI,则需要在连接字符串中硬编码用户名和密码,这意味着“相对不安全”为什么,因为所有员工都有访问权限,甚至前员工都可能恶意使用这些信息