통합 보안 = 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:) true와 sspi동일합니다 :

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, SSPI및 true동일하지만 클라이언트가없는 경우 OleDb나 OracleClient. 나는 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 ID와 Password지정 및 통합 보안이 설정되어 true, 다음 User ID과 Password무시되고 통합 보안이 사용됩니다


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.