Entegre Güvenlik kullanan iki uygulamam var. Biri Integrated Security = truebağlantı dizesine, diğeri ise atar Integrated Security = SSPI.
Entegre Güvenlik arasındaki SSPIve truebağlamındaki fark nedir ?
Entegre Güvenlik kullanan iki uygulamam var. Biri Integrated Security = truebağlantı dizesine, diğeri ise atar Integrated Security = SSPI.
Entegre Güvenlik arasındaki SSPIve truebağlamındaki fark nedir ?
Yanıtlar:
Microsoft'a göre bunlar aynı şey.
Ne zaman
false, bağlantıda Kullanıcı Kimliği ve Parola belirtilir. Değer doğruysa, geçerli Windows hesabı kimlik bilgileri kimlik doğrulaması için kullanılır.
Tanınan değerler vardırtrue,false,yes,no, vesspieşdeğer olan (şiddetle tavsiye edilir)true.
Integrated Security=true;tüm SQL sağlayıcılarında çalışmaz, sağlayıcıyla birlikte kullanıldığında bir istisna atar OleDb.
Yani Integrated Security=SSPI;hem SQLClient& OleDBsağlayıcı ile çalıştığı için temelde tercih edilir .
İşte MSDN - Connection String Syntax (ADO.NET) 'e göre tam sözdizimi kümesi
Windows Kimlik Doğrulamasını Kullanma
Veritabanı sunucusuna bağlanmak için, genellikle tümleşik güvenlik olarak bilinen Windows Kimlik Doğrulaması'nın kullanılması önerilir. Windows kimlik doğrulamasını belirtmek için veri sağlayıcısıyla aşağıdaki iki anahtar / değer çiftinden herhangi birini kullanabilirsiniz. SQL Server için NET Framework:
Integrated Security = true;
Integrated Security = SSPI;
Ancak, yalnızca ikincisi veri sağlayıcı .NET Framework OleDb ile çalışır . Integrated Security = trueConnectionString için ayarlarsanız bir istisna atılır.
Veri sağlayıcıda Windows kimlik doğrulamasını belirtmek için. ODBC için NET Framework, aşağıdaki anahtar / değer çiftini kullanmalısınız.
Trusted_Connection = yes;
Kullandığımız takdirde birçok soru cevap almak .Net Reflectorfiili kodunu görmek için SqlConnection:)
trueve sspiaynıdır:
internal class DbConnectionOptions
...
internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
{
return true;
}
}
...
EDIT 20.02.2018 Şimdi .Net Core'da açık kaynağını github'da görebiliyoruz! ConvertValueToIntegratedSecurityInternal yöntemini arayın:
ConvertValueToIntegratedSecurityInternal. Yani mülkiyet sağlayıcısıdır yalnızca kullanılır SqlClientböylece de SqlClient, SSPI& trueaynıdır ancak istemci olduğunda değil OleDbya OracleClient. Ben o açıklık var stackoverflow.com/a/23637478/704008 msdn atfen
Integrated Security = False: Bağlantıda Kullanıcı Kimliği ve Parola belirtilir. Tümleşik Güvenlik = true: kimlik doğrulaması için geçerli Windows hesabı kimlik bilgileri kullanılır.
Entegre Güvenlik = SSPI: Bu, doğruya eşdeğerdir.
Bağlantı dizesinden kullanıcı adı ve parola özelliklerinden kaçınabilir ve Entegre Güvenliği kullanabiliriz
İle başlayayım Integrated Security = false
false Kullanıcı adı ve Parola bağlantı dizesinde belirtilir.
true Kimlik doğrulaması için Windows hesabı kimlik bilgileri kullanılır.
Tanınan değerler true, false, yes, no, ve SSPI.
Eğer User IDve Passwordbelirtilen ve Entegre Güvenlik ayarlandığında true, daha sonra User IDve Passwordyok sayılacak ve Entegre Güvenlik kullanılacaktır
Bağlantı dizelerinin verilere ne ve nasıl bağlandığınıza özel olduğunu unutmayın . Bunlar aynı veritabanına bağlanıyor ancak ilki SQL Server için .NET Framework Veri Sağlayıcısı kullanıyor. Integrated Security = True, OleDb için çalışmaz.
Şüphe duyduğunuzda Visual Studio Server Explorer Veri Bağlantıları'nı kullanın.
True, yalnızca .NET SqlClient kitaplığını kullanıyorsanız geçerlidir. OLEDB kullanılırken geçerli değildir. SSPI'nin ikisinde de .net SqlClient kitaplığı veya OLEDB kullanıyorsunuz.
Benim bakış açıma göre,
Tümleşik güvenlik = SSPI kullanmıyorsanız, bağlantı dizesindeki kullanıcı adını ve parolayı sabit olarak kodlamanız gerekir, bu da "nispeten güvensiz" anlamına gelir;
Integrated Security = TrueveyaSSPIaynı değil.Integrated Security=true;tüm SQL sağlayıcılarında çalışmaz, sağlayıcıyla birlikte kullanıldığında bir istisna atarOleDb. YaniIntegrated Security=SSPI;hemSQLClient&OleDBsağlayıcı ile çalıştığı için temelde tercih edilir . Daha iyi açıklama için bir cevap ekledim.