문제

통합 보안을 사용하는 두 가지 앱이 있습니다. 하나는 할당됩니다 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 Auth Syntax

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 방법을 검색합니다.

https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdddddddddddddddddddddddddddddddd568151a0c8/src/system.data.sqlclient/src/system/data/common/dbconnection.cs

통합 보안 = 거짓 : 사용자 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를 사용하지 않으면 연결 문자열에서 사용자 이름과 비밀번호를 하드 코딩해야합니다. 이는 "상대적으로 불안한"것을 의미하는 이유는 모든 직원조차도 액세스 권한이 정보를 악의적으로 사용할 수 있기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top