2016-08-23 7 views
9

나의 목표는 WebSocket .Net 클라이언트 구현 (즉, 브라우저가 아닌)을 사용하여 NTLM 인증이 필요한 회사 프록시를 통해 WebSocket에 연결하는 것입니다. 지금까지 모든 솔루션 (예 : websocket-sharp-with-proxy, websocket4net)이 부족합니다.NTLM 프록시에서 .NET WebSocket Client를 사용하는 방법은 무엇입니까?

나는이 시도 :

How to use proxies with the WebSocket4Net library

https://stackoverflow.com/a/2587330/573261

를 지금까지 내가 아는 한, 저자는 NTLM 프록시 지원을 추가하는 방법에 대한이 토론을 업데이트하지 않았습니다.

이 질문에 http://websocket4net.codeplex.com/discussions/448172는 클라이언트 구현 프록시를 지원하지 않는 이유 을 물어했지만, 그것은 대답하지 않은, 아무도이 문제에 접근하고 싶어 이유에 새로운 광명을 비춰하지 않았다.

그래서 내 질문에, 어떻게 하나는 NTLM 프록시 뒤에 클라이언트 응용 프로그램에서 WebSocket 기술을 사용합니까?

+0

기본 .NET http 스택에는 무엇을 사용하고 있습니까? 대부분의 Windows 스택 (예 : WinInet, WinHTTP)은 이미 NTLM을 지원합니다. – Adrien

+0

@Adrien '새로운 WebSocket ("ws : //echo.websocket.org", 출처 : "http://example.com");의 튜닝에 어떤 영향을 미치지 만, NTLM 프록시를 매개 변수로 사용하지는 않습니다 . 내가 언급 한 라이브러리도 시도해 봤고 내부적으로 사용하는 것은 무엇이든간에 – RichardTheKiwi

+0

이것은 독립 실행 형 서비스 프로세스와 같거나 사람이 로그인하고 자신의 자격 증명에서 앱을 시작하는 데스크톱 앱과 같은 것일 수 있습니다. –

답변

2

System.Net.WebSockets에있는 ClientWebSocket 개체는 프록시 설정을 구성 할 수있는 Options 속성을 포함합니다.

var ws = new System.Net.WebSockets.ClientWebSocket(); 
await ws.ConnectAsync(new Uri("destination.com"), CancellationToken.None); 
ws.Options.Proxy = new WebProxy("example.com") 
{ 
    Credentials = new NetworkCredential("userName", "password") 
}; 

NetworkCredential 목적은 암호 기반 인증에 사용되며 당신이 필요로하는 것을 제공 할 수 있습니다. 위의 코드가 작동하지 않는 경우 WebSocket 개체의 Options 속성에 Credentials을 설정해보십시오.

ws.Options.Credentials = new NetworkCredential("userName", "password"); 

이 환경에는 액세스 할 수 없으므로 실제로 시도한 것이 없으며 도움이 될지 확실하지 않습니다. 그러나 이것은 마치 나에게 효과가있는 것처럼 보인다.