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?

War es hilfreich?

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 sind true, false, yes, no und sspi (dringend empfohlen), die true 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)

! [Windows-Auth Syntax

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;

Quelle: MSDN: Arbeiten mit Verbindungszeichenfolgen

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:

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

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.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top