통합 보안 = True와 통합 보안 = SSPI의 차이점은 무엇입니까?


531

통합 보안을 사용하는 두 개의 앱이 있습니다. 하나 Integrated Security = true는 연결 문자열에 할당 하고 다른 하나는 설정합니다 Integrated Security = SSPI.

통합 보안 SSPI과 의 차이점은 무엇입니까 true?


70
허용 된 답변은 가장 좋은 답변이 아니며 완전히 정확하지도 않습니다. Integrated Security = True또는 SSPI동일하지 않습니다. Integrated Security=true;모든 SQL 공급자에서 작동하지는 않지만 공급자와 함께 사용하면 예외가 발생합니다 OleDb. 기본적으로 & 공급자 Integrated Security=SSPI;와 함께 작동하기 때문에 선호 됩니다. 더 나은 설명을 위해 답변을 추가했습니다. SQLClientOleDB
Pranav Singh

3
@PranavSingh는 올바른 아이디어를 가지고 있습니다. 사용중인 공급자 를 지정하지 않으면이 질문은 불완전합니다 . 다른 공급자는 다양한 문자열을 수락하여 내부 상태로 변환합니다.
Mark

그것들은 동일하지만 웹 사이트 중 하나에 아주 오래된 문서가 있다고 생각합니다. 당신과 똑같이 궁금했을 때 Windows 모바일을 위해 개발하고 있다면 (오늘 보는 것이 아니라 오래된 장치입니다. 내가 없었기 때문에 OS 접미사를 기억하지 마십시오.) SSPI와 사용자 비밀번호를 함께 사용해야합니다. 그러나 나는 결코 하나를 쓰지 않았고 그 문서의 출처를 기억하지 못하므로 그것을 보장 할 수 없습니다.
deadManN

답변:


436

Microsoft 에 따르면 그들은 같은 것입니다.

false, 사용자 ID 및 암호는 연결에서 지정됩니다. true 인 경우 현재 Windows 계정 자격 증명이 인증에 사용됩니다.
인식되는 값은된다 true, false, yes, no,과 sspi에 해당하는 (권장) true.


28
원래 "True"는 NTLM을 사용하고 "SSPI"는 Kerberos를 사용한다는 점에서 차이가 있었지만 이제는 서로 호환됩니다.
SqlRyan

5
마지막 주석을 확인하지 않았지만 사실 인 경우 답변이어야하지만 주석이 아니어야합니다.
Johnny_D

20
@RodneyFoley 죄송합니다. 테스트 결과에 따르면이 답변이 올 바르며 귀하의 의견이 올바르지 않습니다. 어쩌면 그것은 한 번 그런 식으로 작동했지만 지금은 그렇지 않으며 귀하의 의견을 뒷받침하는 Microsoft 문서에 대한 참조를 제공 할 수 없습니다.
커크 브로드 허스트

3
커크와 동의하십시오. SSPI를 지정하면 사용자 / 암호가 무시됩니다. .net 4.0, SQL Server 2012.
Alex des Pelagos

3
만약 그들이 "같은 것"이라면 왜 SSPI가 "참"또는 "예"보다는 "강력히 추천"되는가? 이것이 바로이 질문에 온 이유입니다.
Zé Carlos

171

Integrated Security=true;모든 SQL 공급자에서 작동하지는 않지만 공급자와 함께 사용하면 예외가 발생합니다 OleDb.

기본적으로 & 공급자 Integrated Security=SSPI;와 함께 작동하기 때문에 선호 됩니다.SQLClientOleDB

MSDN 에 따른 전체 구문 집합은 다음과 같습니다. ADO.NET (연결 문자열 구문)

! [Windows 인증 구문


73

Windows 인증 사용

데이터베이스 서버에 연결하려면 일반적으로 통합 보안이라고하는 Windows 인증을 사용하는 것이 좋습니다. Windows 인증을 지정하기 위해 데이터 제공자와 함께 다음 두 개의 키-값 쌍 중 하나를 사용할 수 있습니다. SQL Server 용 NET 프레임 워크 :

 Integrated Security = true;
 Integrated Security = SSPI;

그러나 두 번째 만 데이터 공급자 .NET Framework OleDb 와 함께 작동합니다 . Integrated Security = trueConnectionString 을 설정 하면 예외가 발생합니다.

데이터 공급자에서 Windows 인증을 지정합니다. NET Framework for ODBC에서는 다음 키-값 쌍을 사용해야합니다.

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

...

편집 2018년 2월 20일는 이제 닷넷 코어에 우리는 GitHub의에 자사의 오픈 소스를 볼 수 있습니다! ConvertValueToIntegratedSecurityInternal 메소드를 검색하십시오.

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


2
코드의 해당 부분은 name으로 설명 할 수있는 하나의 경우에만 속성 ConvertValueToIntegratedSecurityInternal입니다. 그 속성은 공급자가있는 경우에만 사용됩니다 SqlClient그래서에서 SqlClient, SSPItrue동일하지만 클라이언트가없는 경우 OleDbOracleClient. 나는 MSDN 참조와 함께 stackoverflow.com/a/23637478/704008 에서 알았습니다
Pranav Singh

Pranav의 이유에 대한 투표를 여기서 받으십시오.
Scott

21

Integrated Security = False : 연결에 사용자 ID 및 비밀번호가 지정되어 있습니다. Integrated Security = true : 현재 Windows 계정 자격 증명이 인증에 사용됩니다.

통합 보안 = SSPI : 이는 true와 같습니다.

연결 문자열에서 사용자 이름 및 비밀번호 속성을 피하고 통합 보안을 사용할 수 있습니다


13

시작하겠습니다 Integrated Security = false

false 연결 문자열에 사용자 ID와 비밀번호가 지정되어 있습니다.
true Windows 계정 자격 증명이 인증에 사용됩니다.

인식되는 값은 true, false, yes, no,와 SSPI.

경우 User IDPassword지정 및 통합 보안이 설정되어 true, 다음 User IDPassword무시되고 통합 보안이 사용됩니다


7

연결 문자열은 데이터에 연결 하는 대상방법에 따라 다릅니다 . 이들은 동일한 데이터베이스에 연결되어 있지만 첫 번째는 SQL Server 용 .NET Framework 데이터 공급자를 사용하고 있습니다. Integrated Security = True는 OleDb에서 작동하지 않습니다.

  • 데이터 소스 = .; 초기 카탈로그 = aspnetdb; 통합 보안 = 참
  • 공급자 = SQLOLEDB; 데이터 소스 = .; 통합 보안 = SSPI; 초기 카탈로그 = aspnetdb

확실하지 않은 경우 Visual Studio Server Explorer 데이터 연결을 사용하십시오.



2

내 견해로는

통합 보안 = SSPI를 사용하지 않으면 연결 문자열에 사용자 이름과 비밀번호를 하드 코딩해야합니다. 이는 "비교적 안전하지 않은"이유를 의미합니다. 모든 직원이 전직 직원도 액세스 할 수 있기 때문에 정보를 악의적으로 사용할 수 있기 때문입니다.


1
직원에게 연결 문자열이 반드시 표시되는 것은 아닙니다.
underscore_d
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.