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


531

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

統合セキュリティSSPIとの違いは何trueですか?


70
受け入れられた答えは最良のものではなく、完全に正しいわけでもありません。Integrated Security = TrueまたはSSPI同じではありません。Integrated Security=true;すべてのSQLプロバイダーで機能するわけではありませんOleDb。プロバイダーで使用すると例外がスローされます。&プロバイダーのIntegrated Security=SSPI;両方で動作するため、基本的には推奨されます。より明確にするための回答を追加しました。SQLClientOleDB
Pranav Singh 2014

3
@PranavSinghは正しい考えを持っています、あなたが使用しているプロバイダーを指定しない限り、この質問は不完全です。さまざまなプロバイダーが、さまざまな文字列を受け入れたり、内部状態に変換したりします。
マーク・

それらは同じですが、非常に古いドキュメントがWebサイトの1つにあったと思います。当時、私はあなたと同じように興味を持っていました。つまり、あなたがWindows Mobile用に開発している場合(今日見ているものではなく、古いデバイス) OSサフィックスがないので覚えていない)。SSPIとユーザーパスワードを一緒に使用する必要があります。しかし、私はこれを書いたことがなく、そのドキュメントの出所を覚えていないため、保証することはできません。
deadManN 2016

回答:


436

マイクロソフトによると、それらは同じものです。

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


28
元々、 "True"はNTLMを使用しており、 "SSPI"はKerberosを使用している点で違いがあったと思いますが、現在は互換性があります。
SqlRyan 2008

5
最後のコメントをチェックしませんでしたが、trueの場合、回答ではなくコメントにする必要があります
Johnny_D

20
@RodneyFoley申し訳ありませんが、私のテストでは、この回答が正しいことと、コメントが正しくないことを確認しています。多分それは一度はそのように機能しましたが、今は機能せず、あなたの意見を支持するマイクロソフトのドキュメントへの参照を提供することはできません。
カークブロードハースト2012

3
カークに同意する。SSPIは、指定されたときに、ユーザー/パスワードは無視されます- .NET 4.0、SQLサーバー2012年
アレックス・デペラゴス

3
それで、それらが「同じもの」である場合、SSPIが「真」または「はい」ではなく「強く推奨」されるのはなぜですか?それが私がこの質問に来た理由です
–ZéCarlos

171

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

&プロバイダーのIntegrated Security=SSPI;両方で動作するため、基本的には推奨されます。SQLClientOleDB

MSDN- 接続文字列構文(ADO.NET)による構文の完全なセットは次のとおりです

![Windows Auth構文


73

Windows認証の使用

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

 Integrated Security = true;
 Integrated Security = SSPI;

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

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

Trusted_Connection = yes;

ソース:MSDN:接続文字列の操作


33

私たちが使用している場合、多くの質問には、答えを得る.Net Reflectorの実際のコードを見てSqlConnection:) 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


2
コードのその部分は、名前で説明できる1つのケースのみのプロパティConvertValueToIntegratedSecurityInternalです。このプロパティは、プロバイダがある場合にのみ使用されているSqlClientので、中にSqlClientSSPItrue同じですが、クライアントではありませんときOleDbOracleClient。私は、stackoverflow.com / a / 23637478/704008でmsdn参照を使用してそれを明確にした
Pranav Singh

ここでプラナフの理由に反対票を投じてください。
Scott

21

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

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

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


13

始めましょう Integrated Security = false

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

認識される値はtruefalseyesno、とSSPI

場合User IDPassword指定され、統合セキュリティに設定されtrue、その後、User IDそしてPassword無視され、統合されたセキュリティが使用されます


7

接続文字列が固有であることに注意してくださいどのようにあなたがデータに接続しています。これらは同じデータベースに接続していますが、1つ目は.NET Framework Data Provider for SQL Serverを使用しています。Integrated Security = TrueはOleDbでは機能しません。

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

疑わしい場合は、Visual Studio Server Explorerデータ接続を使用してください。



2

私の視点で、

Integrated security = SSPIを使用しない場合は、接続文字列でユーザー名とパスワードをハードコードする必要があります。これは、「比較的安全でない」ことを意味します。理由は、従業員全員がアクセス権を持ち、従業員が情報を悪意を持って使用する可能性があるためです。


1
接続文字列は、必ずしもすべての従業員に表示されるとは限りません。
underscore_d
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.