2017-05-03 4 views
0

IIS가있는 Windows 서버에서 호스팅되는 WCF 서비스가 있고 회사 내부의 사용자가 데스크톱에 로그인 할 때 도메인 인증을 사용해야하는 Windows 인증으로 설정되어 있습니다. 이 WCF 서비스를 Mono와 함께 리눅스 (우분투)에서 호출하고 싶습니다. netTcp 프로토콜을 사용하지만 변경 될 수 있습니다.Mono 호출에서 Windows 인증을 사용하는 WCF 서비스

var s = new WebTestService.TestServiceClient(); 
s.ClientCredentials.UserName.UserName = "mydomain\\myuser"; 
s.ClientCredentials.UserName.Password = "myPassword"; 

다음과 같이 서비스를 만들지 만 여전히 통신이 가능하지 않습니다.

누구든지이 오류를 해결할 수있는 아이디어가 있습니까? 해결할 수 있습니까? 사전에 감사드립니다.

처리되지 않은 예외 : System.IO.IOException : 전송 연결 에서 데이터를 읽을 수 없습니다. ---> System.Net.Sockets.SocketException : 피어가 연결을 다시 설정했을 때 System.Net.Sockets.Socket.Receive (System.Byte [] buffer, System.Int32 오프셋, System.Int32 크기, System.Net .Sockets.SocketFlags socketFlags) [0x00052]에서 0 : 0 System.Net.Sockets.NetworkStream.Read (System.Byte [완충액에서, 선택 System.Int32 오프셋, 선택 System.Int32 크기) 0x000b4]에
--- (래퍼 관리 - 투 - 네이티브) 으로 System.Object에서 내부 예외 스택 추적 --- 종료 : __ icall_wrapper_mono_remoting_wrapper (INTPTR, INTPTR)에서
(래퍼 원격-호출) MonoTest.WebTestService.ITestService : GetI MonoTest.WebTestService.TestServiceClient.GetIdentity에서 dentity() [0x00007] < 27f805f676fd42ad978ebb382e24c2d7>에서 0 [0 MonoTest.Program.Main 에서 [0x00050] < 27f805f676fd42ad978ebb382e24c2d7>에서 ([] args를 선택 System.String) 오류] 치명적이지 않은 예외 : System.IO.IOException : 전송 연결에서 데이터를 읽을 수 없습니다 : 피어에 의한 연결 재설정. ---> System.Net.Sockets.SocketException : 피어가 연결을 다시 설정했을 때 System.Net.Sockets.Socket.Receive (System.Byte [] buffer, System.Int32 오프셋, System.Int32 크기, System.Net .Sockets.SocketFlags socketFlags) 0에서 에서 0 System.Net.Sockets.NetworkStream.Read: 0에서System.Int32 오프셋, System.Int32 크기 [0x000b4] --- (래퍼 관리 - 투 - 네이티브) 으로 System.Object에서 내부 예외 스택 추적 --- 종료 : __ icall_wrapper_mono_remoting_wrapper (INTPTR, INTPTR)에서
(래퍼 원격-호출) MonoTest.WebTestService.ITestService : GetIdentity() at MonoTest.WebTes tService.TestServiceClient.GetIdentity() 0x00007]에 < 27f805f676fd42ad978ebb382e24c2d7> MonoTest.Program.Main 에서 0 [0x00050]에서 ([] args를 선택 System.String) < 27f805f676fd42ad978ebb382e24c2d7> 0

+0

여기에 다른 문제가 있다고 생각합니다. 먼저 인증없이 작동하게 한 다음 작동하면 인증을 추가 할 수 있습니까? – Popo

+1

익명 인증을 사용하면 매력처럼 작동합니다. –

답변

1

I 사용 내 WCF 웹 서비스 중 하나에서 Windows 인증을위한 사용자 이름과 암호, 정말 같은 사용자 이름과 암호를 지정 :

s.ClientCredentials.Windows.ClientCredential.UserName = "mydomain\\myuser"; 
//in my case I don't use a domain though. 
s.ClientCredentials.Windows.ClientCredential.Password = "myPassword"; 
//I acutally use .SecurePassword and assign it SecureString 
+0

s.ClientCredentials.Windows.ClientCredential.UserName과 s.ClientCredentials.UserName.UserName 사이의 차이점은 무엇입니까? (그리고 s.ClientCredentials.UserName.Password와 같은 속성의 이름을 짓는 것은 왜 그리 재미 있지 않은지 생각하지 않으려 고 노력하십시오. ...) –

+0

@ZoltanHernyak'ClientCredentials.Windows.ClientCredential'은'NetworkCredential' 타입이고'ClientCredentials.UserName'은'UserNamePasswordClientCredential' 타입입니다. 매우 혼란스러운 이름에 동의합니다. 도움이된다면 제 대답을 기대하십시오. – Popo

0

내가 그것을 모노에서 작동 할 수 있었다.

"익명"인증을 사용하더라도 netTcpBinding이 (내 경험에 따르면) 작동하지 않습니다.

wsHttpBinding이 작동하지 않습니다 (메서드 또는 연산이 구현되지 않음).

basicHttpBinding 만 작동합니다. TransportCredentialOnly 및 보안 모드와 함께 작동하며 clientCredentialType Windows 전송 설정을 사용합니다. 이 경우 클라이언트는 "domain \ username"형식의 사용자 이름과 암호를 설정할 수 있습니다.

관련 문제