다음을 통해 공유


HTTP 채널 인증

이 항목은 이전 버전의 기존 응용 프로그램과의 호환성을 위해 유지되고 있으나 새로운 개발에는 권장되지 않는 레거시 기술에 대해 설명합니다. 분산 응용 프로그램은 이제 WCF(Windows Communication Foundation)를 사용하여 개발됩니다.

HttpChannel 채널을 사용하는 원격 호출을 인증하려면 원격 개체가 IIS(인터넷 정보 서비스) 아래에서 호스팅되어야 합니다.

서버 구성

서버의 모든 인증 구성은 IIS를 통해 수행됩니다. HttpChannel에 대한 인증에 관련된 서버 구성 설정은 없습니다. IIS 및 인증 구성에 대한 자세한 내용은 IIS 인증(영문 페이지일 수 있음)을 참조하십시오.

클라이언트 구성

IIS 아래에 호스팅되며 인증을 사용하도록 구성된 원격 개체를 호출할 경우 클라이언트는 자격 증명을 지정해야 합니다. 클라이언트 응용 프로그램이 실행되는 자격 증명을 자동으로 보내려면 useDefaultCredentials 속성을 true로 설정하십시오.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel ref="http" useDefaultCredentials="true"/>
      </channels>
      <client>
        <wellknown 
           url="http://MyServer/IISSec/MyRemoteObj.rem"
           type="Shared.MyRemoteObj, Shared"/>
      </client>
    </application>
  </system.runtime.remoting>
</configuration>

다른 자격 증명 집합을 지정하려면 다음 코드에서처럼 프로그래밍 방식으로 지정할 수 있습니다.

MyRemoteObj obj = new MyRemoteObj();
// Get the current set of channel sink properties
IDictionary props = ChannelServices.GetChannelSinkProperties(obj);
// Set domain, username, and password properties
props["domain"] = "SomeDomain";
props["username"] = "SomeUser";
props["password"] = "SomePassword123";
Console.WriteLine(obj.SayHello());

또는 credentials 속성을 프로그래밍 방식으로 설정할 수 있으며, 이 경우 ICredentials 인터페이스를 구현하는 클래스를 지정합니다. 우선 ICredentials 인터페이스를 구현하는 클래스를 만듭니다.

namespace MyCredentialsLib
{
    public class MyCredentials : ICredentials
    {
        public NetworkCredential GetCredential(Uri uri, string authType)
        {
            Console.WriteLine("MyCredentials.GetCredential() called");
            NetworkCredential newCred = new NetworkCredential("SomeRemotingUser", "SomePassword");
            return newCred;
        }
    }
} 

그 후 클라이언트에서 다음 코드처럼 ICredentials를 구현하는 클래스의 인스턴스를 만들고 credentials 속성을 이 인스턴스에 설정해야 합니다.

RemotingConfiguration.Configure("client.exe.config", false);
MyRemoteObj obj = new MyRemoteObj();
IDictionary props = ChannelServices.GetChannelSinkProperties(obj);
MyCredentials credentials = new MyCredentials();
props["credentials"] = credentials;
Console.WriteLine(obj.SayHello()); 
36tfwzb0.note(ko-kr,VS.100).gif참고:
응용 프로그램에 자격 증명을 하드 코드하지 않는 것이 좋습니다. 여기에서는 설명의 목적으로만 하드 코드했습니다.

useAuthenticatedConnectionSharing 속성은 서버 채널이 각 들어오는 호출을 인증하는 대신 인증된 연결을 재사용하도록 지정합니다. useDefaultCredentialstrue로 설정된 경우 이 속성의 기본값은 true가 됩니다. 이 속성은 <channel> 요소 내 구성 파일에서 설정하거나 이전 샘플 코드에서 설정한 usernamepassword 속성과 동일한 방법으로 프로그래밍 방식으로 설정할 수 있습니다.

unsafeAuthenticatedConnectionSharing 속성은 서버가 인증된 연결 그룹을 만드는 데 사용하는 연결 그룹 이름과 자체 자격 증명을 클라이언트가 제공하도록 지정합니다. 이 속성을 true로 설정하면 connectionGroupName 속성은 인증된 단일 사용자로 설정해야 합니다. useAuthenticatedConnectionSharing 속성이 true로 설정되어 있으면 이 속성은 무시됩니다.

참고 항목

개념

TCP 채널 인증
IPC 채널 인증
암호화 및 메시지 무결성