2010-03-19 4 views
2

.net 3.5 WebService를 사용하는 WPF 4.0 windows 응용 프로그램을 작성했습니다. 익명의 연결을 허용하기 위해 웹 서비스를 호스팅 할 때 제대로 작동하지만 통합 인증을 사용하는 웹 사이트 내에서 라이브로 가져올 때 사용해야하는 WebService가 필요합니다.WPF Windows 응용 프로그램에서 통합 인증을 사용하는 WebService 사용

WPF 응용 프로그램을 실행하는 사용자는 웹 서버와 동일한 도메인 내의 컴퓨터에 로그온되며 NTLM 인 웹 브라우저를 사용하여 WebService를 탐색 할 경우 (인증 정보를 입력하지 않고) WebService를 볼 수있는 권한을가집니다 auth enabled.

응용 프로그램을 실행중인 이미 로그인 한 사용자의 세부 정보를 WebService로 전달할 수 있습니까?

MyWebService.SearchSoapClient client = new SearchSoapClient(); 
//From the research I've done I think I need to something with these: 
//UserName.PreAuthenticate = true; 
//System.Net.CredentialCache.DefaultCredentials; 
List<Person> result = client.FuzzySearch("This is my search string").ToList(); 

모든 포인터는 많이 감사 : 여기

내가 현재 사용하고 코드입니다.

HTTP 요청이 클라이언트 인증 방식 '익명'무단입니다 : 여기

호출이 현재 만들어 질 때 내가 오류 메시지입니다. 서버에서 수신 한 인증 헤더 은 'Negotiate, NTLM, Digest qop = "auth", 알고리즘 = MD5-sess, nonce = "+ Upgraded + v17 {hashremoved}", charset = utf-8, realm = " 요람"'.

답변

5

그래서이 문제에 대한 해결책은 필자의 경우 매우 간단합니다.

<security mode="TransportCredentialOnly"> 
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> 
<message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 

주 내가 모드를 변경하고 clientCredentialType 특성 : 여기에

<security mode="None"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
<message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 

다음 app.config 파일에서 WebService에 대한 바인딩 구성에서

, 나는이 변경되었습니다.

client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; 
:

그리고 난 뒤에 코드에서

는 WebService에에 메서드를 호출하기 전에이 줄을 추가
관련 문제