TCP 채널로 인증
호출자를 식별하여 해당 ID와 연결된 사용 권한으로 실행되는 원격 프로시저가 필요한 경우가 있습니다. 이러한 방법을 사용하면 악의적인 호출자가 원격 프로시저를 이용하여 권한이 없는 작업을 수행하지 못합니다.
.NET Framework에서는 원격 개체의 서버가 연결된 TcpServerChannel 및 TcpClientChannel 개체의 구성 속성을 설정하여 호출자를 식별하고 가장할 수 있습니다.
서버 구성
원격 호출자를 인증하는 서버 TCP 채널을 구성하려면 TcpServerChannel 개체의 authenticationMode 구성 속성을 사용합니다. 이 구성 속성에는 AuthenticationMode 열거형의 모든 멤버를 설정할 수 있습니다. authenticationMode가 IdentifyCallers로 설정되면 채널은 모든 호출자에게 확인 가능한 사용자 ID를 제공하도록 요청합니다. authenticationMode가 ImpersonateCallers로 설정되면 서버의 모든 작업이 제공된 ID로 수행됩니다. 프로그래밍 방식으로 authenticationMode 구성 속성을 설정하는 방법에 대한 예는 방법: authenticationMode 구성 속성 설정을 참조하십시오.
인증된 클라이언트의 ID는 CallContext 클래스에서 __remotePrincipal 데이터로 사용할 수 있습니다.
클라이언트 구성
원격 서버에 대한 호출자를 식별하는 클라이언트 TCP 채널을 구성하려면 TcpClientChannel 개체의 impersonationLevel 구성 속성을 사용합니다. 이 구성 속성에서는 ClientImpersonationLevel 열거형의 모든 멤버를 설정할 수 있습니다. impersonationLevel이 None으로 설정되면 원격 서버에 대한 모든 호출이 익명으로 수행됩니다. impersonationLevel이 Identify로 설정되면 클라이언트에서 원격 서버에 대한 호출자를 식별합니다. impersonationLevel이 Impersonate로 설정되면 클라이언트는 제공된 ID를 사용하여 원격 호출을 실행합니다. impersonationLevel이 Delegate로 설정되면 서버에서 클라이언트 ID를 전달합니다. 원격 서버에 클라이언트가 허용하는 것보다 높은 수준의 impersonationLevel이 필요한 경우(예: authenticationMode가 IdentifyCallers로 설정되고 impersonationLevel이 None으로 설정되거나 authenticationMode가 ImpersonateCallers로 설정되고 impersonationLevel이 Identify로 설정된 경우) 예외가 throw됩니다.
기본적으로 TCP 클라이언트 채널은 클라이언트 프로세스가 실행 중인 사용자 ID로 자체 인증을 수행합니다. useDefaultCredentials 구성 속성을 false로 설정하고 대체 ID를 지정하는 domain, username 및 password 구성 속성을 설정하여 대체 ID를 지정할 수 있습니다.
복잡한 프로그래밍 로직에 기반하여 인증 수행 여부를 결정하도록 TCP 클라이언트 채널을 구성할 수 있습니다. authenticationPolicy 구성 속성을 IAuthenticationPolicy 인터페이스를 구현하는 개체로 설정한 경우 개체의 ValidateSecurityPackage 메서드가 호출되어 인증 처리 여부가 결정됩니다.
구성 파일에서 인증을 수행하는 TCP 클라이언트 채널을 설정하는 방법에 대한 예는 방법: 인증을 수행하는 TCP 클라이언트 채널 설정을 참조하십시오.
참고 항목
작업
방법: authenticationMode 구성 속성 설정
방법: 인증을 수행하는 TCP 클라이언트 채널 설정
참조
AuthenticationMode
ClientImpersonationLevel