Visual Studio 프로젝트에서 비-Kerberos 인증 지정

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.

Visual Studio 2005에서 작업할 때 일부 인증 메커니즘에서는 추가 단계를 설정해야 합니다. 예를 들어 Kerberos 인증에는 SPN(서비스 보안 주체 이름) 등록과 기타 관련 단계가 필요합니다. 자세한 내용은 Http.sys를 사용하여 Kerberos 서비스 사용자 이름 등록을 참조하십시오.

통합 인증을 사용하도록 구성된 HTTP 끝점은 Kerberos나 NTLM을 인증 체계로 사용하여 클라이언트에 응답할 수 있습니다. Kerberos와 NTLM 중 서버에서 선택하여 사용하는 실제 체계는 클라이언트가 인증 요청 시 사용하는 체계를 기준으로 합니다. 자세한 내용은 끝점 인증 유형을 참조하십시오.

이 항목에서는 서버의 인증 유형으로 통합 인증을 선택할 때 웹 서비스 클라이언트 응용 프로그램에서 Kerberos가 아닌 다른 인증 체계를 요청하도록 Visual Studio 2005 프로젝트를 수정하는 방법을 자세히 설명합니다.

일반적으로 Visual Studio 2005에서 클라이언트 응용 프로그램을 작성할 때는 SQL Server 구현 시 네이티브 XML 웹 서비스에 사용할 자격 증명을 설정해야 합니다. 통합 인증을 사용할 경우 다음과 같은 코드를 사용할 수 있습니다.

myServer.sql_endpoint proxy = new myServer.sql_endpoint();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

그러나 SPN 등록 문제와 같이 Kerberos 인증이 다른 컴퓨터에서 작동하도록 올바르게 설정되지 않은 경우 NTLM, BASIC 또는 DIGEST를 인증 유형으로 선택함으로써 HTTP 끝점(sql_endpoint)에서 허용되는 인증 체계에서 Kerberos를 제외하도록 명시적으로 설정하기 전까지는 Visual Studio 2005에서 항상 Kerberos를 인증 체계로 사용하게 됩니다. 그 대신 Visual Studio 2005에서 NTLM과 같이 지원되는 다른 체계를 사용하도록 지정할 수 있습니다.

다음 코드에서는 Visual Studio 2005에서 사용하는 인증 체계를 무시하고 대신 클라이언트 응용 프로그램 요청 NTLM을 인증 메커니즘으로 사용하도록 설정하는 방법을 보여 줍니다.

mattm1.sql_endpoint proxy = new mattm1.sql_endpoint();
System.Net.CredentialCache myCreds = new System.Net.CredentialCache();

myCreds.Add(new Uri(proxy.Url), "NTLM", System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri(proxy.Url), "NTLM"));
proxy.Credentials = myCreds;

위의 코드 샘플을 사용하여 Visual Studio 2005에서 INTEGRATED 끝점에 Kerberos 대신 NTLM을 사용하도록 설정할 수는 있지만 SPN 문제로 Kerberos를 사용할 수 없을 때는 NTLM을 사용하도록 AUTHENICATION=NTLM으로 구성된 끝점을 만드는 것이 좋습니다.

개발 환경을 위한 추가 구성 요구 사항

위 섹션에서 설명한 코드 수정을 통해 클라이언트 응용 프로그램에서 Kerberos가 아닌 인증 체계를 지정하고 사용할 수 있지만 개발 환경에서 응용 프로그램을 실행하고 테스트할 때 이를 지원하려면 추가 태스크가 필요합니다.

기본적으로 Visual Studio의 웹 참조 추가 기능은 웹 서비스에서 WSDL 응답을 가져오려고 할 때 항상 Kerberos를 사용합니다. 이를 방지하려면 다음 문제 해결 단계를 수행합니다.

  1. 개발 환경에 맞게 Kerberos 인증을 설정합니다. 여기에는 단일 사용자 또는 개발자의 도메인 그룹에 대한 Kerberos SPN 등록 작업이 포함됩니다. 자세한 내용은 Http.sys를 사용하여 Kerberos 서비스 사용자 이름 등록을 참조하십시오.

  2. 끝점에서 일시적으로 Kerberos를 사용하지 않도록 설정합니다. 다음 ALTER ENDPOINT 프로시저를 사용하여 DIGEST 모드로 전환하면 WSDL 응답을 올바르게 받을 수 있습니다.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Visual Studio 2005 프로젝트에서 웹 참조를 추가합니다.

  4. 다음과 같이 끝점을 다시 INTEGRATED 모드로 전환합니다.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

또는 다음 단계를 수행할 수 있습니다.

  1. 다른 메커니즘을 통해 WSDL 응답을 가져옵니다. 예를 들어 Internet Explorer를 사용하고 WSDL 응답을 파일로 저장합니다.

  2. 다음과 같이 URL 대신 파일로 Visual Studio에 웹 참조를 추가합니다. http://MyServer/sql_endpoint?wsdl.