통합 보안을 사용하는 두 개의 앱이 있습니다. 하나 Integrated Security = true
는 연결 문자열에 할당 하고 다른 하나는 설정합니다 Integrated Security = SSPI
.
통합 보안 SSPI
과 의 차이점은 무엇입니까 true
?
통합 보안을 사용하는 두 개의 앱이 있습니다. 하나 Integrated Security = true
는 연결 문자열에 할당 하고 다른 하나는 설정합니다 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 인증 사용
데이터베이스 서버에 연결하려면 일반적으로 통합 보안이라고하는 Windows 인증을 사용하는 것이 좋습니다. Windows 인증을 지정하기 위해 데이터 제공자와 함께 다음 두 개의 키-값 쌍 중 하나를 사용할 수 있습니다. SQL Server 용 NET 프레임 워크 :
Integrated Security = true;
Integrated Security = SSPI;
그러나 두 번째 만 데이터 공급자 .NET Framework OleDb 와 함께 작동합니다 . Integrated Security = true
ConnectionString 을 설정 하면 예외가 발생합니다.
데이터 공급자에서 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;
}
}
...
편집 2018년 2월 20일는 이제 닷넷 코어에 우리는 GitHub의에 자사의 오픈 소스를 볼 수 있습니다! ConvertValueToIntegratedSecurityInternal 메소드를 검색하십시오.
ConvertValueToIntegratedSecurityInternal
입니다. 그 속성은 공급자가있는 경우에만 사용됩니다 SqlClient
그래서에서 SqlClient
, SSPI
및 true
동일하지만 클라이언트가없는 경우 OleDb
나 OracleClient
. 나는 MSDN 참조와 함께 stackoverflow.com/a/23637478/704008 에서 알았습니다
연결 문자열은 데이터에 연결 하는 대상 과 방법에 따라 다릅니다 . 이들은 동일한 데이터베이스에 연결되어 있지만 첫 번째는 SQL Server 용 .NET Framework 데이터 공급자를 사용하고 있습니다. Integrated Security = True는 OleDb에서 작동하지 않습니다.
확실하지 않은 경우 Visual Studio Server Explorer 데이터 연결을 사용하십시오.
True는 .NET SqlClient 라이브러리를 사용하는 경우에만 유효합니다. OLEDB를 사용할 때는 유효하지 않습니다. SSPI가 bvaid 인 경우 .net SqlClient 라이브러리 또는 OLEDB를 사용하고 있습니다.
내 견해로는
통합 보안 = SSPI를 사용하지 않으면 연결 문자열에 사용자 이름과 비밀번호를 하드 코딩해야합니다. 이는 "비교적 안전하지 않은"이유를 의미합니다. 모든 직원이 전직 직원도 액세스 할 수 있기 때문에 정보를 악의적으로 사용할 수 있기 때문입니다.
Integrated Security = True
또는SSPI
동일하지 않습니다.Integrated Security=true;
모든 SQL 공급자에서 작동하지는 않지만 공급자와 함께 사용하면 예외가 발생합니다OleDb
. 기본적으로 & 공급자Integrated Security=SSPI;
와 함께 작동하기 때문에 선호 됩니다. 더 나은 설명을 위해 답변을 추가했습니다.SQLClient
OleDB