Wat is het verschil tussen Integrated Security = True en Integrated Security = SSPI?

Ik heb twee apps die geïntegreerde beveiliging gebruiken. De ene wijst Integrated Security = truetoe aan de verbindingsreeks, en de andere stelt Integrated Security = SSPIin.

Wat is het verschil tussen SSPIen truein de context van geïntegreerde beveiliging?


Antwoord 1, autoriteit 100%

Volgens Microsoftzijn hetzelfde.

Als false, Gebruikers-ID en Wachtwoord zijn opgegeven in de verbinding. Indien waar, worden de huidige Windows-accountreferenties gebruikt voor verificatie.
Herkende waarden zijn true, false, yes, noen SSPI(sterk aanbevolen), wat gelijk is aan true.


Antwoord 2, autoriteit 44%

Integrated Security=true;werkt niet in alle SQL-providers, het genereert een uitzondering bij gebruik met de OleDB-provider.

Dus in feite heeft Integrated Security=SSPI;de voorkeur, aangezien het werkt met zowel SQLClient& OleDB-provider.

Hier is de volledige set syntaxis volgens MSDN – Syntaxis voor verbindingsreeksen (ADO.NET)


Antwoord 3, autoriteit 16%

Windows-verificatie gebruiken

Om verbinding te maken met de databaseserver wordt aanbevolen om Windows-verificatie te gebruiken, beter bekend als geïntegreerde beveiliging. Om de Windows-verificatie op te geven, kunt u een van de volgende twee sleutel-waardeparen gebruiken bij de gegevensprovider. NET Framework voor SQL Server:

Integrated Security = true;
 Integrated Security = SSPI;

Alleen de tweede werkt echter met de gegevensprovider .NET Framework OleDb. Als u Integrated Security = trueinstelt voor ConnectionString, wordt er een uitzondering gegenereerd.

Om de Windows-verificatie in de gegevensprovider op te geven. NET Framework voor ODBC, moet u het volgende sleutel/waarde-paar gebruiken.

Trusted_Connection = yes;

Bron: MSDN: werken met verbindingsreeksen


Antwoord 4, autoriteit 7%

Veel vragen worden beantwoord als we .Net Reflectorgebruiken om de daadwerkelijke code van SqlConnectionte zien 🙂
trueen SSPIzijn hetzelfde:

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

BEWERK 20.02.2018
Nu in .Net Core kunnen we de open source op github zien!
Zoek naar ConvertValueToIntegratedSecurityInternal-methode:

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


Antwoord 5, autoriteit 5%

Integrated Security = False : Gebruikers-ID en wachtwoord zijn opgegeven in de verbinding.
Integrated Security = true : de huidige Windows-accountgegevens worden gebruikt voor authenticatie.

Integrated Security = SSPI : dit komt overeen met true.

We kunnen de gebruikersnaam- en wachtwoordkenmerken van de verbindingsreeks vermijden en de geïntegreerde beveiliging gebruiken


Antwoord 6, autoriteit 3%

Laat me beginnen met Integrated Security = false

falseGebruikers-ID en wachtwoord worden gespecificeerd in de verbindingsreeks.
trueWindows-accountgegevens worden gebruikt voor verificatie.

Herkende waarden zijn true, false, yes, noen SSPI.

Als User IDen Passwordzijn opgegeven en Integrated Security is ingesteld op true, dan User IDen Passwordwordt genegeerd en geïntegreerde beveiliging wordt gebruikt


Antwoord 7, autoriteit 2%

Houd er rekening mee dat verbindingsreeksen specifiek zijn voor waten hoeu verbinding maakt met gegevens. Deze maken verbinding met dezelfde database, maar de eerste gebruikt .NET Framework Data Provider voor SQL Server. Integrated Security=True werkt niet voor OleDb.

  • Gegevensbron=.;Initial Catalog=aspnetdb;Integrated Security=True
  • Provider=SQLOLEDB;Gegevensbron=.;Integrated Security=SSPI;Initial Catalog=aspnetdb

Gebruik bij twijfel de Visual Studio Server Explorer-gegevensverbindingen.


Antwoord 8

True is alleen geldig als u de .NET SqlClient-bibliotheek gebruikt. Het is niet geldig bij gebruik van OLEDB.
Waar SSPI in beide wordt ondersteund, gebruikt u de .net SqlClient-bibliotheek of OLEDB.


Antwoord 9

Naar mijn mening,

Als u Integrated security=SSPI niet gebruikt, moet u de gebruikersnaam en het wachtwoord hardcoderen in de verbindingsreeks, wat “relatief onveilig” betekent, omdat alle werknemers toegang hebben, zelfs ex-werknemers kunnen de informatie kwaadwillig gebruiken.

Other episodes