質問

統合セキュリティを使用する2つのアプリがあります。 1つは接続文字列に Integrated Security = true を割り当て、もう1つは Integrated Security = SSPI を設定します。

統合セキュリティのコンテキストでの SSPI true の違いは何ですか?

役に立ちましたか?

解決

Microsoft によると同じものです。

  

false の場合、接続でユーザーIDとパスワードが指定されます。 trueの場合、現在のWindowsアカウントの資格情報が認証に使用されます。
  認識される値は、 true false yes no 、および sspi (強く推奨)、これは true と同等です。

他のヒント

Integrated Security = true; はすべてのSQLプロバイダーで機能するわけではなく、 OleDb プロバイダーで使用すると例外がスローされます。

したがって、基本的には Integrated Security = SSPI; が推奨されます。これは、 SQLClient と& OleDB プロバイダー。

による構文の完全なセットを次に示します。 MSDN-接続文字列構文(ADO.NET)

![Windows Auth Syntax

Windows認証の使用

データベースサーバーに接続するには、一般に統合セキュリティと呼ばれるWindows認証を使用することをお勧めします。 Windows認証を指定するには、データプロバイダーで次の2つのキーと値のペアのいずれかを使用できます。 NET Framework for SQL Server:

 Integrated Security = true;
 Integrated Security = SSPI;

ただし、2番目のみがデータプロバイダー .NET Framework OleDb で動作します。 ConnectionStringに Integrated Security = true を設定すると、例外がスローされます。

データプロバイダーでWindows認証を指定するには。 NET Framework for ODBCでは、次のキーと値のペアを使用する必要があります。

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;
    }
}

...

編集20.02.2018 .Net Coreでは、githubでオープンソースを確認できます! ConvertValueToIntegratedSecurityInternalメソッドを検索します。

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

Integrated Security = False:接続でユーザーIDとパスワードが指定されています。 統合セキュリティ= true:現在のWindowsアカウントの資格情報が認証に使用されます。

統合セキュリティ= SSPI:これはtrueと同等です。

接続文字列からユーザー名とパスワードの属性を回避し、統合セキュリティを使用できます

統合セキュリティ= false

から始めましょう

false 接続文字列でユーザーIDとパスワードが指定されています。
true Windowsアカウントの資格情報が認証に使用されます。

認識される値は、 true false yes no 、および SSPI 。

User ID および Password が指定され、Integrated Securityが true に設定されている場合、 User ID およびパスワードは無視され、統合セキュリティが使用されます

接続文字列は、データに接続している what および方法に固有のものであることに注意してください。これらは同じデータベースに接続していますが、最初はSQL Server用の.NET Framework Data Providerを使用しています。 Integrated Security = TrueはOleDbでは機能しません。

  • データソース= .;初期カタログ= aspnetdb;統合セキュリティ= True
  • Provider = SQLOLEDB; Data Source = .; Integrated Security = SSPI; Initial Catalog = aspnetdb

疑わしい場合は、Visual Studioサーバーエクスプローラーのデータ接続を使用します。

Trueは、.NET SqlClientライブラリを使用している場合にのみ有効です。 OLEDBを使用する場合は無効です。 .net SqlClientライブラリまたはOLEDBのどちらを使用している場合でも、SSPIが有効です。

私の観点では、

Integrated security = SSPIを使用しない場合は、接続文字列にユーザー名とパスワードをハードコーディングする必要があります。これは、「比較的安全でない」ことを意味します。なぜなら、すべての従業員は元従業員でさえ悪意を持って情報を使用する可能性があるためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top