J'ai deux applications qui utilisent la sécurité intégrée. L'un affecte Integrated Security = true
dans la chaîne de connexion et les autres ensembles Integrated Security = SSPI
.
Quelle est la différence entre SSPI
et true
dans le contexte de la sécurité intégrée?
Integrated Security = True
ouSSPI
ne sont pas les mêmes.Integrated Security=true;
ne fonctionne pas dans tous les fournisseurs SQL, il lève une exception lorsqu'il est utilisé avec leOleDb
fournisseur. Donc , fondamentalement ,Integrated Security=SSPI;
est préférée car fonctionne aussi bien avecSQLClient
etOleDB
fournisseur. J'ai ajouté une réponse pour une meilleure clarification.Réponses:
Selon Microsoft, c'est la même chose.
la source
Integrated Security=true;
ne fonctionne pas dans tous les fournisseurs SQL, il lève une exception lorsqu'il est utilisé avec leOleDb
fournisseur.Donc , fondamentalement ,
Integrated Security=SSPI;
est préférée car fonctionne aussi bien avecSQLClient
etOleDB
fournisseur.Voici l'ensemble complet des syntaxes selon MSDN - Syntaxe de chaîne de connexion (ADO.NET)
la source
Utilisation de l'authentification Windows
Pour se connecter au serveur de base de données, il est recommandé d'utiliser l'authentification Windows, communément appelée sécurité intégrée. Pour spécifier l'authentification Windows, vous pouvez utiliser l'une des deux paires clé-valeur suivantes avec le fournisseur de données. NET Framework pour SQL Server:
Cependant, seul le second fonctionne avec le fournisseur de données .NET Framework OleDb . Si vous définissez
Integrated Security = true
ConnectionString, une exception est levée.Pour spécifier l'authentification Windows dans le fournisseur de données. NET Framework pour ODBC, vous devez utiliser la paire clé-valeur suivante.
Source: MSDN: utilisation des chaînes de connexion
la source
De nombreuses questions obtiennent des réponses si nous utilisons
.Net Reflector
pour voir le code réel deSqlConnection
:)true
etsspi
sont les mêmes:EDIT 20.02.2018 Maintenant dans .Net Core, nous pouvons voir son open source sur github! Recherchez la méthode ConvertValueToIntegratedSecurityInternal:
https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
la source
ConvertValueToIntegratedSecurityInternal
. Cette propriété est utilisée uniquement lorsque le fournisseur estSqlClient
donc dansSqlClient
,SSPI
ettrue
sont les mêmes , mais pas lorsque le client estOleDb
ouOracleClient
. J'ai précisé que dans stackoverflow.com/a/23637478/704008 avec référence msdnSécurité intégrée = Faux: l'ID utilisateur et le mot de passe sont spécifiés dans la connexion. Sécurité intégrée = vrai: les informations d'identification du compte Windows actuel sont utilisées pour l'authentification.
Sécurité intégrée = SSPI: c'est équivalent à vrai.
Nous pouvons éviter les attributs de nom d'utilisateur et de mot de passe de la chaîne de connexion et utiliser la sécurité intégrée
la source
Permettez-moi de commencer par
Integrated Security = false
false
L'ID utilisateur et le mot de passe sont spécifiés dans la chaîne de connexion.true
Les informations d'identification du compte Windows sont utilisées pour l'authentification.Les valeurs reconnues sont
true
,false
,yes
,no
etSSPI
.Si
User ID
etPassword
sont spécifiés et que la sécurité intégrée est définie surtrue
, alorsUser ID
etPassword
sera ignoré et la sécurité intégrée sera utiliséela source
Notez que les chaînes de connexion sont spécifiques à quoi et comment vous vous connectez aux données. Ceux-ci se connectent à la même base de données, mais le premier utilise le fournisseur de données .NET Framework pour SQL Server. Integrated Security = True ne fonctionnera pas pour OleDb.
En cas de doute, utilisez les connexions de données de Visual Studio Server Explorer.
la source
True n'est valide que si vous utilisez la bibliothèque .NET SqlClient. Il n'est pas valide lors de l'utilisation d'OLEDB. Lorsque SSPI est bvaid dans les deux cas, vous utilisez la bibliothèque .net SqlClient ou OLEDB.
la source
De mon point de vue,
Si vous n'utilisez pas Integrated security = SSPI, vous devez coder en dur le nom d'utilisateur et le mot de passe dans la chaîne de connexion, ce qui signifie "relativement peu sûr" pourquoi, car tous les employés ont accès, même les anciens employés pourraient utiliser les informations de manière malveillante.
la source