다음을 통해 공유


IPC 채널 인증

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

IPC 채널은 인증 및 가장을 직접 지원합니다. 이 항목에서는 클라이언트 및 서버 채널을 구성하는 방법에 대해 설명합니다.

.NET Framework를 사용하면 원격 개체의 서버가 연결된 IpcServerChannelIpcClientChannel 개체의 속성을 설정하여 호출자를 인증하고 가장할 수 있습니다. HTTP 및 TCP 채널과 달리 IPC 채널은 기본적으로 인증을 수행합니다. IpcServerChannel을 만들면 해당 채널에 대한 *ACL(액세스 제어 목록)*이 만들어집니다. 기본적으로 ACL에는 서버 응용 프로그램을 실행하는 자격 증명만 포함되어 있습니다. 채널과 통신하려면 클라이언트(및 IpcClientChannel)를 동일한 자격 증명으로 실행해야 합니다. 그러나 사용자 또는 사용자 그룹이 채널에 액세스할 수 있도록 IPC 서버 채널 구성에 Windows 사용자 또는 User 그룹을 지정할 수 있습니다.

서버 구성

해당 ID로 서버 응용 프로그램을 실행하는 사용자가 아닌 사용자가 IPC 채널에 액세스할 수 있도록 하려면 authorizedGroup 속성에 사용자 또는 사용자 그룹을 지정할 수 있습니다. 다음 구성 파일을 사용하면 Users 그룹의 모든 사용자가 IPC 채널에 액세스할 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>

IPC 채널은 가장도 지원합니다. 가장은 서버에서 impersonate 속성으로 제어됩니다. 다음 구성은 가장을 설정합니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Microsoft.Samples.Implementation.ImplementationClass, Server" objectUri="server.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" secure="true" impersonate="true" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(ko-kr,VS.100).gif참고:
IPC 채널 인증을 사용하는 경우 impersonate 속성을 true로 설정할 때 secure 속성도 true로 설정해야 합니다.

ms172351.note(ko-kr,VS.100).gif참고:
모든 프로세스가 표준 사용자 계정으로 Windows Vista에서 실행됩니다. 표준 사용자는 관리자 계정을 가장할 수 없습니다. 관리자 계정을 가장해야 하는 원격 응용 프로그램이 있는 경우 높은 권한으로 해당 응용 프로그램을 실행해야 합니다.

CurrentPrincipal을 가져온 다음 Identity 속성에 액세스하여 인증된 클라이언트의 ID에 액세스할 수 있습니다. 가장된 클라이언트의 ID는 GetCurrent로 액세스할 수 있습니다. 필요한 경우 고유한 권한 부여를 수행할 수 있습니다.

IPC 채널은 항상 NTLM 인증을 사용합니다. IPC는 단일 컴퓨터 내의 호출로 제한되므로 Kerberos는 지원되지 않습니다.

클라이언트 구성

가장을 사용하도록 클라이언트 IPC 채널을 구성하려면 다음 구성 파일과 같이 tokenImpersonationLevel 속성을 impersonation으로 설정합니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
              <channel ref="ipc" secure="true" tokenImpersonationLevel="impersonation" />
             </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(ko-kr,VS.100).gif참고:
IPC 채널 인증을 사용하는 경우 tokenImpersonationLevel 속성을 "impersonation"으로 설정할 때 secure 속성도 true로 설정해야 합니다. 가장을 사용하려면 서버 채널의 impersonate 속성을 true로 설정해야 합니다. 서버에서는 이 속성을 impersonate라고 하지만 클라이언트에서는 tokenImpersonationLevelimpersonation으로 설정합니다.

ms172351.note(ko-kr,VS.100).gif참고:
모든 프로세스가 표준 사용자 계정으로 Windows Vista에서 실행됩니다. 표준 사용자는 관리자 계정을 가장할 수 없습니다. 관리자 계정을 가장해야 하는 원격 응용 프로그램이 있는 경우 높은 권한으로 해당 응용 프로그램을 실행해야 합니다.

tokenImpersonationLevel을 다음 표에 있는 값 중 하나로 설정할 수 있습니다.

tokenImpersonationLevel 설정 설명

identification

서버는 보안 식별자 및 권한과 같은 클라이언트에 대한 정보를 얻을 수 있지만 클라이언트를 가장할 수 없습니다.

impersonation

서버는 로컬 시스템에서 클라이언트의 보안 컨텍스트를 가장할 수 있습니다. 원격 시스템에서는 서버가 클라이언트를 가장할 수 없습니다.

delegation

원격 시스템에서는 서버가 클라이언트를 가장할 수 있습니다.

ms172351.note(ko-kr,VS.100).gif참고:
IPC 채널에서는 프로그래밍 방식으로 또는 구성을 통해 대체 자격 증명 집합을 지정할 수 없습니다. 따라서 클라이언트가 항상 클라이언트를 실행하는 자격 증명을 서버로 보냅니다.

ms172351.note(ko-kr,VS.100).gif참고:
IPC 채널은 NTLM만 인증에 사용합니다.

참고 항목

개념

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