2016-12-12 2 views
0

이것은 SQL Server 2008 R2, .NET 4.0입니다.ADO.NET - Windows에서 SQL Server에 연결 응용 프로그램에서 제공하는 로그인 및 암호로 로그인합니다.

내 SQL Server에는 "Windows 인증"으로 만든 사용자가 있습니다. 사용자가 Active Directory 도메인에 있습니다.

.NET 응용 프로그램을이 사용자로 SQL Server에 연결하려고합니다. 응용 프로그램 내부에서 사용자의 도메인, 로그인 및 암호를 알고 있으며 응용 프로그램이 AD 서버에 대한 네트워크 액세스 권한을 가지고 있습니다.

어떻게하면됩니까?

나는 ASP.NET이 AD 제공자이고 가장이라는 것을 알고있다. 하지만 내가 찾고있는 것은 정말 일반적인 솔루션이며, 일반 콘솔 응용 프로그램에서 작동해야합니다. 콘솔 응용 프로그램, Windows 양식, asp.net 또는 공통 비즈니스 클래스 라이브러리에서 사용할 수있는 것.

도움 주셔서 감사합니다.

+0

좀 더 명확히하기 위해 : SQL 연결 문자열에 "Integrated Security = true"를 사용해야합니다. 하지만 SQL Server에 연결을 시도하기 전에 특정 AD 사용자를 가장해야합니다. 실제로 내 응용 프로그램을 실행하는 사용자는 SQL AD 사용자가 아닙니다. 그러나 응용 프로그램 내에서 AD 사용자의 자격 증명을 알 수 있으므로 SQL에 연결하기 전에 가장 할 수 있어야합니다. 질문은 어떻게됩니까? –

답변

0

:

https://platinumdogs.me/2008/10/30/net-c-impersonation-with-network-credentials/

당신은 컴퓨터가 도메인에 속하지 않는 경우 = 9 LOGON32_LOGON_NEW_CREDENTIALS를 사용하여 가장해야합니다.

가장 한 다음 SQL 연결 문자열에서 "Integrated Security = true"를 사용하여 SQL에 연결하십시오.

SqlConnection conn; 
using (new Impersonator("myUserName", "myDomain", "myPassword", LogonType.LOGON32_LOGON_NEW_CREDENTIALS, LogonProvider.LOGON32_PROVIDER_DEFAULT)) 
{ 
    conn = new SqlConnection("Data Source=databaseIp;Initial Catalog=databaseName;Integrated Security=true;"); 
    conn.Open(); 
} 
//(...) use the connection at your will. 
//Even after the impersonation context ended, the connection remains usable. 

경고 : 연결 풀링에주의하십시오. 풀은 가장 된 네트워크 자격 증명이 아닌 응용 프로그램을 실행하는 실제 사용자와 연결됩니다. 따라서 동일한 연결 문자열을 사용하는 후속 액세스에서 풀을 사용하면 두 번째 사용자가 네트워크로 연결되는 경우에도 이전에 가장 한 사용자가 만든 연결이 반환 될 수 있습니다. 수행중인 작업을 모르는 경우에는 연결 풀링을 사용하지 않도록 설정하십시오.

0

여기에 수많은 기사와 자습서가 있습니다. 약간의 연구를 통해 필요한 것을 쉽게 찾을 수 있고 여러 곳에서 잘 설명 할 수 있습니다. 다음은 시작하기에 좋은 장소입니다 :

Beginners guide to accessing SQL Server through C#

명의 도용에 관해서는, 당신은 사용자 ID 대신 글로벌 그룹을 사용하는 것이 좋습니다. 그런 다음 모든 최종 사용자가 해당 글로벌 그룹의 구성원이되도록하십시오. 나는이 클래스를 사용하여 그것을 한 적이

+0

이 초보자 가이드는 응용 프로그램을 실행하는 사용자가 이미 SQL Server 계정이있는 것으로 가정하기 때문에 나에게 도움이되지 않습니다. 글로벌 그룹을 만들 수 없습니다. 나는 내가 가지고있는 기반 시설과 함께 살 필요가있다. 그것은 10 년 넘게 생산 중에있다. –

+0

다음을보십시오. http://stackoverflow.com/questions/41102480/connectionstring-with-spectific-ad-account-credential. 내 경험에 비추어 볼 때 SQL 연결을 여는 동안에 만 가장을 사용해야합니다. – oldovets