it-swarm.com.de

Was ist der Unterschied zwischen Integrated Security = True und Integrated Security = SSPI?

Ich habe zwei Apps, die Integrated Security verwenden. Einer weist Integrated Security = true in der Verbindungszeichenfolge zu, und der andere legt Integrated Security = SSPI fest.

Was ist der Unterschied zwischen SSPI und true im Kontext der integrierten Sicherheit?

490
JD.

Laut Microsoft sind sie dasselbe.

Wenn false, werden Benutzer-ID und Kennwort in der Verbindung angegeben. Wenn true, werden die aktuellen Windows-Kontoanmeldeinformationen für die Authentifizierung verwendet.
Erkannte Werte sind true, false, yes, no und sspi (dringend empfohlen), was true entspricht.

406
cptScarlet

Integrated Security=true; funktioniert nicht bei allen SQL-Providern, sondern löst bei Verwendung mit dem Provider OleDb eine Ausnahme aus.

Grundsätzlich wird Integrated Security=SSPI; bevorzugt, da es mit beiden Anbietern SQLClient & OleDB funktioniert.

Hier ist der vollständige Satz von Syntaxen gemäß MSDN - Connection String Syntax (ADO.NET)

![Windows Auth Syntax

141
Pranav Singh

Verwenden der Windows-Authentifizierung

Um eine Verbindung zum Datenbankserver herzustellen, wird die Verwendung der Windows-Authentifizierung empfohlen, die allgemein als integrierte Sicherheit bezeichnet wird. Um die Windows-Authentifizierung festzulegen, können Sie mit dem Datenprovider eines der beiden folgenden Schlüssel-Wert-Paare verwenden. NET Framework für SQL Server:

 Integrated Security = true;
 Integrated Security = SSPI;

Mit dem Datenprovider funktioniert jedoch nur der zweite .NET Framework OleDb . Wenn Sie Integrated Security = true für ConnectionString festlegen, wird eine Ausnahme ausgelöst.

So legen Sie die Windows-Authentifizierung im Datenprovider fest In NET Framework für ODBC sollten Sie das folgende Schlüssel-Wert-Paar verwenden.

Trusted_Connection = yes;

Quelle: MSDN: Arbeiten mit Verbindungszeichenfolgen

65
Asereware

Viele Fragen werden beantwortet, wenn wir .Net Reflector verwenden, um den tatsächlichen Code von SqlConnection zu sehen :) true und sspi sind gleich:

internal class DbConnectionOptions

...

internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
    if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
    {
        return true;
    }
}

...

EDIT 20.02.2018 Jetzt in .Net Core können wir seine Open Source auf Github sehen! Suchen Sie nach der Methode ConvertValueToIntegratedSecurityInternal:

https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs

31
Pavel Biryukov

Integrierte Sicherheit = Falsch: Benutzer-ID und Kennwort werden in der Verbindung angegeben. Integrierte Sicherheit = true: Die aktuellen Windows-Anmeldeinformationen werden für die Authentifizierung verwendet.

Integrierte Sicherheit = SSPI: Dies ist gleichbedeutend mit true.

Wir können die Benutzer- und Kennwortattribute aus der Verbindungszeichenfolge vermeiden und die integrierte Sicherheit verwenden

21
NITIN KAUSHIK

Lass mich mit Integrated Security = false beginnen

false Benutzer-ID und Kennwort werden in der Verbindungszeichenfolge angegeben.
true Windows-Kontoanmeldeinformationen werden für die Authentifizierung verwendet.

Erkannte Werte sind true, false, yes, no und SSPI.

Wenn User ID und Password angegeben sind und Integrated Security auf true eingestellt ist, werden User ID und Password ignoriert und Integrated Security verwendet

13
kudlatiger

Beachten Sie, dass Verbindungszeichenfolgen spezifisch für sind, mit was und wie Sie eine Verbindung herstellen Daten. Diese stellen eine Verbindung zu derselben Datenbank her, die erste verwendet jedoch den .NET Framework-Datenanbieter für SQL Server. Integrated Security = True funktioniert bei OleDb nicht.

  • Datenquelle = .; Erstkatalog = aspnetdb; Integrierte Sicherheit = True
  • Provider = SQLOLEDB; Data Source = .; Integrated Security = SSPI; Initial Catalog = aspnetdb

Verwenden Sie im Zweifelsfall die Visual Studio Server Explorer-Datenverbindungen.

7
user1874524

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.

5
Amit Shishodia

Aus meiner Sicht,

Wenn Sie Integrated Security = SSPI nicht verwenden, müssen Sie den Benutzernamen und das Kennwort in der Verbindungszeichenfolge fest codieren, was "relativ unsicher" bedeutet, da alle Mitarbeiter Zugriff haben, auch wenn die Informationen von ehemaligen Mitarbeitern böswillig verwendet werden könnten.

2
Sathishkumar