統合セキュリティを使用するアプリが2つあります。1つIntegrated Security = true
は接続文字列に割り当て、もう1つはに割り当てますIntegrated Security = SSPI
。
統合セキュリティSSPI
との違いは何true
ですか?
統合セキュリティを使用するアプリが2つあります。1つIntegrated Security = true
は接続文字列に割り当て、もう1つはに割り当てますIntegrated Security = SSPI
。
統合セキュリティSSPI
との違いは何true
ですか?
回答:
マイクロソフトによると、それらは同じものです。
の場合
false
、接続でユーザーIDとパスワードが指定されます。trueの場合、現在のWindowsアカウントの資格情報が認証に使用されます。
認識された値はtrue
、false
、yes
、no
、とsspi
に相当する、(強く推奨します)true
。
Integrated Security=true;
すべてのSQLプロバイダーで機能するわけではありませんOleDb
。プロバイダーで使用すると例外がスローされます。
&プロバイダーのIntegrated Security=SSPI;
両方で動作するため、基本的には推奨されます。SQLClient
OleDB
MSDN- 接続文字列構文(ADO.NET)による構文の完全なセットは次のとおりです
Windows認証の使用
データベースサーバーに接続するには、一般に統合セキュリティと呼ばれるWindows認証を使用することをお勧めします。Windows認証を指定するには、データプロバイダーで次の2つのキーと値のペアのいずれかを使用できます。SQL ServerのNET Framework:
Integrated Security = true;
Integrated Security = SSPI;
ただし、2番目のみがデータプロバイダーの.NET Framework OleDbで機能します。Integrated Security = true
ConnectionString を設定すると、例外がスローされます。
データプロバイダーでWindows認証を指定します。ODBC用のNET Frameworkでは、次のキーと値のペアを使用する必要があります。
Trusted_Connection = yes;
ソース:MSDN:接続文字列の操作
私たちが使用している場合、多くの質問には、答えを得る.Net Reflector
の実際のコードを見てSqlConnection
:)
true
とsspi
同じです。
internal class DbConnectionOptions
...
internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
{
return true;
}
}
...
EDIT 20.02.2018 .Net Coreで、githubにオープンソースを表示できます!ConvertValueToIntegratedSecurityInternalメソッドを検索します。
ConvertValueToIntegratedSecurityInternal
です。このプロパティは、プロバイダがある場合にのみ使用されているSqlClient
ので、中にSqlClient
、SSPI
&true
同じですが、クライアントではありませんときOleDb
かOracleClient
。私は、stackoverflow.com / a / 23637478/704008でmsdn参照を使用してそれを明確にした
接続文字列が固有であることに注意してください何とどのようにあなたがデータに接続しています。これらは同じデータベースに接続していますが、1つ目は.NET Framework Data Provider for SQL Serverを使用しています。Integrated Security = TrueはOleDbでは機能しません。
疑わしい場合は、Visual Studio Server Explorerデータ接続を使用してください。
Trueは、.NET SqlClientライブラリを使用している場合にのみ有効です。OLEDBを使用する場合は無効です。SSPIが両方で.net SqlClientライブラリまたはOLEDBのどちらかを使用している場合。
私の視点で、
Integrated security = SSPIを使用しない場合は、接続文字列でユーザー名とパスワードをハードコードする必要があります。これは、「比較的安全でない」ことを意味します。理由は、従業員全員がアクセス権を持ち、従業員が情報を悪意を持って使用する可能性があるためです。
Integrated Security = True
またはSSPI
同じではありません。Integrated Security=true;
すべてのSQLプロバイダーで機能するわけではありませんOleDb
。プロバイダーで使用すると例外がスローされます。&プロバイダーのIntegrated Security=SSPI;
両方で動作するため、基本的には推奨されます。より明確にするための回答を追加しました。SQLClient
OleDB