web-dev-qa-db-ja.com

Integrated Security = TrueとIntegrated Security = SSPIの違いは何ですか?

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

統合セキュリティの観点から見たSSPItrueの違いは何ですか?

469
JD.

Microsoftによると 彼らは同じことです。

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

398
cptScarlet

Integrated Security=true;はすべてのSQLプロバイダで機能するわけではありません。OleDbプロバイダとともに使用すると例外がスローされます。

そのため、基本的にIntegrated Security=SSPI;SQLClientOleDBの両方のプロバイダで動作するので好まれます。

これは MSDN - 接続文字列構文(ADO.NET) に従った構文のフルセットです。

![Windows Auth Syntax

131
Pranav Singh

Windows認証の使用

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

 Integrated Security = true;
 Integrated Security = SSPI;

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

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

Trusted_Connection = yes;

ソース: MSDN:接続文字列の使用

63
Asereware

SqlConnection :)の実際のコードを見るために.Net Reflectorを使った場合、多くの質問に答えが出ます:truesspiは同じです。

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メソッドを検索します。

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

30
Pavel Biryukov

Integrated Security = False:接続にユーザーIDとパスワードが指定されています。 Integrated Security = true:現在のWindowsアカウント認証情報が認証に使用されます。

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

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

21
NITIN KAUSHIK

Integrated Security = falseから始めましょう

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

認識される値はtruefalseyesno、およびSSPIです。

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

13
kudlatiger

接続文字列は、データに接続している what および how に固有のものです。これらは同じデータベースに接続していますが、最初はSQL Server用の.NET Frameworkデータプロバイダーを使用しています。 Integrated Security = TrueはOleDbでは機能しません。

  • データソース= .;初期カタログ= aspnetdb;統合セキュリティ= True
  • プロバイダ= SQLOLEDB;データソース= .;統合セキュリティ= SSPI;初期カタログ= aspnetdb

疑問がある場合は、Visual Studioサーバーエクスプローラのデータ接続を使用してください。

7
user1874524

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

5
Amit Shishodia

私の視点で、

Integrated security = SSPIを使用しない場合は、接続文字列にユーザー名とパスワードをハードコードする必要があります。これは、 "比較的安全でない"ことを意味します。

2
Sathishkumar