Ik heb twee apps die geïntegreerde beveiliging gebruiken. De ene wijst Integrated Security = true
toe aan de verbindingsreeks, en de andere stelt Integrated Security = SSPI
in.
Wat is het verschil tussen SSPI
en true
in 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 zijntrue
,false
,yes
,no
enSSPI
(sterk aanbevolen), wat gelijk is aantrue
.
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 = true
instelt 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 Reflector
gebruiken om de daadwerkelijke code van SqlConnection
te zien 🙂
true
en SSPI
zijn 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:
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
false
Gebruikers-ID en wachtwoord worden gespecificeerd in de verbindingsreeks.
true
Windows-accountgegevens worden gebruikt voor verificatie.
Herkende waarden zijn true
, false
, yes
, no
en SSPI
.
Als User ID
en Password
zijn opgegeven en Integrated Security is ingesteld op true
, dan User ID
en Password
wordt 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.
- Wat is sspi?
- Syntaxis voor verbindingsreeksen
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.