Was ist der Unterschied zwischen Integrated Security = True und Integrated Security = SSPI?
-
22-07-2019 - |
Frage
Ich habe zwei Anwendungen, die integrierte Sicherheit verwenden. Man ordnet Integrated Security = true
in der Verbindungszeichenfolge und die anderen Sätze Integrated Security = SSPI
.
Was ist der Unterschied zwischen SSPI
und true
im Rahmen des Integrated Security?
Lösung
Nach Microsoft sie dasselbe ist.
Wenn
false
, Benutzer-ID und Passwort sind in der Verbindung angegeben. Wenn wahr, werden die aktuellen Windows-Konto-Anmeldeinformationen für die Authentifizierung verwendet.
Erkannte Werte sindtrue
,false
,yes
,no
undsspi
(dringend empfohlen), dietrue
entspricht.
Andere Tipps
Integrated Security=true;
funktioniert nicht in allen SQL-Provider, es löst eine Ausnahme aus, wenn sie mit dem OleDb
Anbieter verwendet.
Also im Grunde ist Integrated Security=SSPI;
da funktioniert sowohl mit SQLClient
& OleDB
Anbieter bevorzugt.
Hier ist der volle Satz von Syntaxen nach MSDN - Connection String Syntax (ADO.NET)
Verwendung von Windows-Authentifizierung
zum Datenbankserver Um eine Verbindung wird empfohlen, Windows-Authentifizierung zu verwenden, das gemeinhin als integrierte Sicherheit bekannt. Um die Windows-Authentifizierung angeben, können Sie eine der folgenden zwei Schlüssel-Wert-Paare mit dem Datenanbieter verwenden. NET Framework für SQL Server:
Integrated Security = true;
Integrated Security = SSPI;
jedoch nur die zweite Arbeit mit dem Datenanbieter .NET Framework OleDb . Wenn Sie Integrated Security = true
für Connection eine Ausnahme gesetzt geworfen.
Um die Windows-Authentifizierung im Datenprovider angeben. NET Framework für ODBC, sollten Sie das folgende Schlüssel-Wert-Paar verwenden.
Trusted_Connection = yes;
Viele Fragen Antworten bekommen, wenn wir .Net Reflector
verwenden den eigentlichen Code von SqlConnection
zu sehen :)
true
und sspi
sind die gleichen:
internal class DbConnectionOptions
...
internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
{
return true;
}
}
...
EDIT 2018.02.20 Jetzt in .Net-Core können wir seine Open-Source auf Github sehen! Suchen Sie nach ConvertValueToIntegratedSecurityInternal Methode:
Integrierte Sicherheit = False: User-ID und Passwort sind in der Verbindung angegeben. Integrated Security = true:. Die aktuellen Anmeldeinformationen Windows zur Authentifizierung verwendet
Integrated Security = SSPI: Das ist equivalant auf true.
Wir können den Benutzernamen und das Passwort vermeiden Attribute aus der Verbindungszeichenfolge und verwenden Sie die integrierte Sicherheit
Lassen Sie mich mit Integrated Security = false
starten
false
Benutzer-ID und Passwort sind in der Verbindungszeichenfolge angegeben.
true
Windows-Konto-Anmeldeinformationen für die Authentifizierung verwendet wird.
Erkannte Werte sind true
, false
, yes
, no
und SSPI
.
Wenn User ID
und Password
spezifiziert und integrierte Sicherheit wird auf true
, dann User ID
und Password
werden ignoriert und integrierte Sicherheit verwendet werden
Beachten Sie, dass Verbindungszeichenfolgen sind spezifisch für was und wie Sie Daten verbinden. Diese sind eine Verbindung zu derselben Datenbank aber die erste ist mit .NET Framework-Datenanbieter für SQL Server. Integrated Security = True wird nicht für OleDb arbeiten.
- Data Source = .; Initial Catalog = aspnetdb; Integrated Security = True
- Provider = SQLOLEDB; Data Source = .; Integrated Security = SSPI; Initial Catalog = aspnetdb
Wenn Sie Zweifel haben, die Visual Studio Server-Explorer Datenverbindungen verwenden.
- Was ist sspi ?
- Verbindungszeichenfolgen Syntax
True ist nur gültig, wenn Sie die .NET SqlClient-Bibliothek verwenden. Es ist nicht gültig, wenn OLEDB verwenden. Wo SSPI ist bvaid in beide entweder Sie .net SqlClient Bibliothek oder OLEDB verwenden.
In meiner Sicht,
Wenn Sie die integrierte Sicherheit nicht verwenden = SSPI, dann müssen Sie den Benutzernamen und das Kennwort in der Verbindungszeichenfolge codieren, die „relativ unsicher“ bedeutet, warum, weil alle Mitarbeiter den Zugang haben, auch Ex-Mitarbeiter die Informationen böswillig nutzen könnten.