Was ist der Unterschied zwischen Integrated Security = True and Integrated Security = SSPI?
Ich habe zwei apps, die Integrierte Sicherheit verwenden. Ordnet man Integrated Security = true
in der Verbindungszeichenfolge, und die anderen sets Integrated Security = SSPI
.
Was ist der Unterschied zwischen SSPI
und true
im Rahmen der Integrierten Sicherheit?
- Die akzeptierte Antwort ist nicht die beste, das ist nicht vollständig korrekt.
Integrated Security = True
oderSSPI
sind nicht dasselbe.Integrated Security=true;
funktioniert nicht in allen SQL-Provider, it-löst eine Ausnahme aus, wenn Sie Sie mit derOleDb
Anbieter. Also im GrundeIntegrated Security=SSPI;
ist bevorzugt, da funktioniert sowohl mitSQLClient
&OleDB
Anbieter. Ich habe eine Antwort für eine bessere Klärung. - hat die richtige Idee, diese Frage ist unvollständig, wenn Sie angeben, welchen Anbieter Sie verwenden. Verschiedene Anbieter übernehmen und/oder übersetzen von verschiedenen strings in den internen Zustände.
- Obwohl Sie sind die gleichen, ich glaube, es war ein sehr altes Dokument in einer der websites, zu der Zeit war ich neugierig, genauso wie du, sagte, dass, wenn Sie die Entwicklung für windows mobile (nicht das, was Sie heute sehen, sind die alten Geräte, die ich erinnere mich nicht an die OS-suffix, da hatte ich nie eins), sollten Sie die Verwendung von SSPI und Benutzer-Passwort zusammen. da ich aber nie geschrieben, und ich erinnere mich nicht an die Quelle des Dokuments, kann ich nicht garantieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut Microsoft Sie sind die gleiche Sache.
System.Data.SqlClient
habe ich diesem Artikel, die sagtTrue
bedeutet, dassUser Id
undPassword
werden ignoriert undSSPI
bedeutet, dass Sie verwendet werden, wenn vorhanden, aber Windows-Sicherheit wird verwendet, wenn nicht. Diesen link, sagt wahr, ignoriert Sie aber nicht erwähnt, SSPI.Integrated Security=true;
funktioniert nicht in allen SQL-Provider, it-löst eine Ausnahme aus, wenn Sie Sie mit derOleDb
Anbieter.Also im Grunde
Integrated Security=SSPI;
ist bevorzugt, da funktioniert sowohl mitSQLClient
&OleDB
Anbieter.Hier ist der vollständige Satz von der Syntax nach MSDN - Connection String Syntax (ADO.NET)
Mithilfe Der Windows-Authentifizierung
Verbindung zum Datenbank-server wird empfohlen, um die Windows-Authentifizierung verwenden, allgemein bekannt als die integrierte Sicherheit. Festlegen der Windows-Authentifizierung verwenden, können Sie die folgenden zwei Schlüssel-Wert-Paare mit dem Daten-provider. NET Framework für die SQL Server:
Jedoch nur die zweite arbeitet mit den Daten-provider .NET Framework OleDb. Wenn Sie
Integrated Security = true
für ConnectionString wird eine Ausnahme geworfen.Festlegen der Windows-Authentifizierung in den Daten-provider. NET Framework für ODBC verwenden, sollten Sie die folgenden Schlüssel-Wert-paar.
Quelle: MSDN: Arbeiten mit Verbindungszeichenfolgen
Viele Fragen Antworten zu bekommen, wenn wir
.Net Reflector
zu sehen, der eigentliche code derSqlConnection
🙂true
undsspi
sind die gleichen:BEARBEITEN 20.02.2018
Jetzt im .Net Core, die wir sehen können, seine open-source auf github!
Suche für ConvertValueToIntegratedSecurityinternal Methode:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
ConvertValueToIntegratedSecurityInternal
. Diese Eigenschaft wird nur verwendet, wenn provider istSqlClient
so inSqlClient
,SSPI
&true
sind die gleichen, aber nicht, wenn der client istOleDb
oderOracleClient
. Ich habe klargestellt, daß in stackoverflow.com/a/23637478/704008 mit msdn-ReferenzIntegrated Security = False : die Benutzer-ID und Kennwort angegeben sind, in Verbindung.
Integrated Security = true : die aktuellen Windows-Anmeldeinformationen für die Authentifizierung verwendet werden.
Integrated Security = SSPI : das ist dieselbe Menge, zu wahren.
Können wir vermeiden, dass die Attribute username und password, die in der Verbindungszeichenfolge, und verwenden Sie die Integrierte Sicherheit
Lassen Sie mich beginnen mit
Integrated Security = false
false
Benutzer-ID und Kennwort in der Verbindungszeichenfolge angegeben.true
Windows-Konto-Anmeldeinformationen für die Authentifizierung verwendet werden.Anerkannte Werte sind
true
,false
,yes
,no
, undSSPI
.Wenn
User ID
undPassword
angegeben sind und Integrierte Sicherheit eingestellt isttrue
, dannUser ID
undPassword
werden ignoriert und die Integrierte Sicherheit verwendet werdenBeachten Sie, dass die connection-strings sind speziell auf was und wie Sie eine Verbindung zu Daten. Diese verbinden auf die gleiche Datenbank, aber die erste ist mit .NET Framework-Datenanbieter für SQL Server. Integrated Security=True wird nicht für OleDb.
Wenn im Zweifel, verwenden Sie die Visual Studio-Server-Explorer-Datenverbindungen.
Wahr ist nur gültig, wenn Sie mit der .NET SqlClient-Bibliothek. Es ist nicht gültig bei Verwendung von OLEDB.
Wo SSPI ist bvaid entweder Sie verwenden .net SqlClient-library oder OLE DB.
In meiner Sicht,
Wenn Sie nicht, verwenden Sie die Integrierte Sicherheit=SSPI verwenden,dann müssen Sie hartcodieren den Benutzernamen und das Kennwort in der Verbindungszeichenfolge was bedeutet "relativ unsicher" warum, weil, alle Mitarbeiter Zugriff haben auch ex-Mitarbeiter könnten die Informationen böswillig.