Entegre Güvenlik kullanan iki uygulamam var. Biri Integrated Security = true
bağlantı dizesine, diğeri ise atar Integrated Security = SSPI
.
Entegre Güvenlik arasındaki SSPI
ve true
bağlamındaki fark nedir ?
Entegre Güvenlik kullanan iki uygulamam var. Biri Integrated Security = true
bağlantı dizesine, diğeri ise atar Integrated Security = SSPI
.
Entegre Güvenlik arasındaki SSPI
ve true
bağ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
, vesspi
eş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
& OleDB
sağ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 = true
ConnectionString 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 Reflector
fiili kodunu görmek için SqlConnection
:)
true
ve sspi
aynı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 SqlClient
böylece de SqlClient
, SSPI
& true
aynıdır ancak istemci olduğunda değil OleDb
ya 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 ID
ve Password
belirtilen ve Entegre Güvenlik ayarlandığında true
, daha sonra User ID
ve Password
yok 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 = True
veyaSSPI
aynı 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
&OleDB
sağlayıcı ile çalıştığı için temelde tercih edilir . Daha iyi açıklama için bir cevap ekledim.