Ich habe zwei Apps, die Integrated Security verwenden. Einer weist Integrated Security = true
in der Verbindungszeichenfolge zu, der andere setzt Integrated Security = SSPI
.
Was ist der Unterschied zwischen SSPI
und true
im Kontext der integrierten Sicherheit?
Integrated Security = True
oderSSPI
sind nicht gleich.Integrated Security=true;
funktioniert nicht bei allen SQL-Anbietern, löst bei Verwendung mit demOleDb
Anbieter eine Ausnahme aus . Also im GrundeIntegrated Security=SSPI;
ist seit Arbeiten mit beiden bevorzugtSQLClient
&OleDB
Provider. Ich habe eine Antwort zur besseren Klarstellung hinzugefügt.Antworten:
Laut Microsoft sind sie dasselbe.
quelle
Integrated Security=true;
funktioniert nicht bei allen SQL-Anbietern, löst bei Verwendung mit demOleDb
Anbieter eine Ausnahme aus .Also im Grunde
Integrated Security=SSPI;
ist seit Arbeiten mit beiden bevorzugtSQLClient
&OleDB
Provider.Hier ist der vollständige Satz von Syntaxen gemäß MSDN - Connection String Syntax (ADO.NET)
quelle
Verwenden der Windows-Authentifizierung
Für die Verbindung zum Datenbankserver wird die Verwendung der Windows-Authentifizierung empfohlen, die allgemein als integrierte Sicherheit bezeichnet wird. Um die Windows-Authentifizierung anzugeben, können Sie mit dem Datenprovider eines der beiden folgenden Schlüssel-Wert-Paare verwenden. NET Framework für SQL Server:
Allerdings funktioniert nur die zweite mit dem Datenprovider .NET Framework OleDb . Wenn Sie
Integrated Security = true
ConnectionString festlegen, wird eine Ausnahme ausgelöst.So legen Sie die Windows-Authentifizierung im Datenprovider fest NET Framework für ODBC sollten Sie das folgende Schlüssel-Wert-Paar verwenden.
Quelle: MSDN: Arbeiten mit Verbindungszeichenfolgen
quelle
Viele Fragen erhalten Antworten, wenn wir
.Net Reflector
den tatsächlichen Code vonSqlConnection
:) sehentrue
undsspi
sind die gleichen:EDIT 20.02.2018 Jetzt in .Net Core können wir seine Open Source auf Github sehen! Suchen Sie nach der ConvertValueToIntegratedSecurityInternal-Methode:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
quelle
ConvertValueToIntegratedSecurityInternal
. Diese Eigenschaft wird nur verwendet, wenn der AnbieterSqlClient
dies tutSqlClient
undSSPI
&true
identisch ist, jedoch nicht, wenn der ClientOleDb
oder istOracleClient
. Ich habe klargestellt, dass in stackoverflow.com/a/23637478/704008 mit msdn ReferenzIntegrierte Sicherheit = Falsch: Benutzer-ID und Kennwort werden in der Verbindung angegeben. Integrierte Sicherheit = true: Die aktuellen Anmeldeinformationen des Windows-Kontos werden zur Authentifizierung verwendet.
Integrierte Sicherheit = SSPI: Dies entspricht true.
Wir können die Attribute für Benutzername und Kennwort aus der Verbindungszeichenfolge vermeiden und die integrierte Sicherheit verwenden
quelle
Lass mich anfangen mit
Integrated Security = false
false
Benutzer-ID und Kennwort werden in der Verbindungszeichenfolge angegeben.true
Die Anmeldeinformationen des Windows-Kontos werden zur Authentifizierung verwendet.Erkannte Werte sind
true
,false
,yes
,no
, undSSPI
.Wenn
User ID
undPassword
angegeben sind und Integrierte Sicherheit auf gesetzt isttrue
, wirdUser ID
undPassword
ignoriert und Integrierte Sicherheit verwendetquelle
Beachten Sie, dass Verbindungszeichenfolgen spezifisch dafür sind, was und wie Sie eine Verbindung zu Daten herstellen. Diese stellen eine Verbindung zu derselben Datenbank her, aber die erste verwendet .NET Framework Data Provider für SQL Server. Integrierte Sicherheit = True funktioniert nicht für OleDb.
Verwenden Sie im Zweifelsfall die Datenverbindungen von Visual Studio Server Explorer.
quelle
True ist nur gültig, wenn Sie die .NET SqlClient-Bibliothek verwenden. Es ist nicht gültig, wenn OLEDB verwendet wird. Wenn SSPI in beiden Fällen bvaid ist, verwenden Sie entweder die .net SqlClient-Bibliothek oder OLEDB.
quelle
Aus meiner Sicht,
Wenn Sie Integrated Security = SSPI nicht verwenden, müssen Sie den Benutzernamen und das Kennwort in der Verbindungszeichenfolge fest codieren. Dies bedeutet "relativ unsicher", da alle Mitarbeiter Zugriff haben, auch wenn ein ehemaliger Mitarbeiter die Informationen böswillig verwenden könnte.
quelle