통합 보안 = True 및 Integrated Security = SSPI의 차이점은 무엇입니까?
-
22-07-2019 - |
문제
통합 보안을 사용하는 두 가지 앱이 있습니다. 하나는 할당됩니다 Integrated Security = true
연결 문자열과 다른 세트에서 Integrated Security = SSPI
.
차이점은 무엇입니까? SSPI
그리고 true
통합 보안의 맥락에서?
해결책
에 따르면 마이크로 소프트 그들은 같은 것입니다.
언제
false
, 사용자 ID와 비밀번호는 연결에 지정되어 있습니다. 사실 인 경우 현재 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의 순 프레임 워크 :
Integrated Security = true;
Integrated Security = SSPI;
그러나 두 번째는 데이터 제공 업체와 함께 작동합니다. .NET 프레임 워크 OLEDB. 설정하면 Integrated Security = true
ConnectionString의 경우 예외가 발생합니다.
데이터 제공 업체의 Windows 인증을 지정합니다. Net Framework 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;
}
}
...
편집 20.02.2018이제 .NET Core에서 GitHub에서 오픈 소스를 볼 수 있습니다! ConvertValuetointegratedSecurityInal 방법을 검색합니다.
통합 보안 = 거짓 : 사용자 ID와 비밀번호는 연결에 지정되어 있습니다. 통합 보안 = true : 현재 Windows 계정 자격 증명은 인증에 사용됩니다.
통합 보안 = SSPI : 이것은 True와 동일합니다.
연결 문자열에서 사용자 이름과 암호 속성을 피하고 통합 보안을 사용할 수 있습니다.
시작하겠습니다 Integrated Security = false
false
사용자 ID와 비밀번호는 연결 문자열에 지정되어 있습니다.
true
Windows 계정 자격 증명은 인증에 사용됩니다.
인식 된 값입니다 true
, false
, yes
, no
, 그리고 SSPI
.
만약에 User ID
그리고 Password
지정되고 통합 보안이 설정되어 있습니다 true
, 그 다음에 User ID
그리고 Password
무시되고 통합 보안이 사용됩니다
연결 문자열은 다음과 같습니다 무엇 그리고 어떻게 데이터에 연결하고 있습니다. 이들은 동일한 데이터베이스에 연결되지만 첫 번째는 SQL Server에 .NET Framework Data Provider를 사용하는 것입니다. 통합 보안 = True는 OLEDB의 경우 작동하지 않습니다.
- 데이터 소스 =.; 초기 카탈로그 = ASPNETDB; 통합 보안 = true
- 제공자 = SQLOLEDB; DATA SOURCE =.; 통합 보안 = SSPI; 초기 카탈로그 = ASPNETDB
의심스러운 경우 Visual Studio Server Explorer 데이터 연결을 사용하십시오.
.NET SQLClient 라이브러리를 사용하는 경우에만 TRUE가 유효합니다. OLEDB를 사용할 때 유효하지 않습니다. 여기서 SSPI는 .NET SqlClient 라이브러리 또는 OLEDB를 사용하고 있습니다.
내 관점에서
Integrated Security = SSPI를 사용하지 않으면 연결 문자열에서 사용자 이름과 비밀번호를 하드 코딩해야합니다. 이는 "상대적으로 불안한"것을 의미하는 이유는 모든 직원조차도 액세스 권한이 정보를 악의적으로 사용할 수 있기 때문입니다.