2013-04-26 54 views
2

우리는 클라이언트 dll이 액세스하려고하는 IIS에서 호스팅되는 WCF 서비스를 가지고 있습니다. 이 서비스는 IIS에서 HTTPS를 사용하도록 바인딩되어 있으며 클라이언트 인증서를 무시하도록 설정되어 있습니다. SSL은 잘 작동하지만 문제는 SSL을 필요로합니다.WCF에서 SSL을 요구하면 "클라이언트 인증 체계 '익명'으로 HTTP 요청을 금지했습니다."오류가 발생합니다.

실제로 이해할 수없는 것은 서비스의 메소드 중 하나를 호출하는 것이 잘 작동하지만 다른 메소드를 호출하면 작동하지 않고 다음과 같은 오류가 발생한다는 것입니다. "HTTP 요청이 클라이언트 인증 스키마와 함께 금지되었습니다. 익명 'System.Net.WebException : 원격 서버 오류를 반환했습니다 : (403) 금지. "

이 문제의 원인은 무엇일까요? 나는 WCF에 꽤 새로 왔습니다. 그래서 만약 내가 무엇이든 빠져 있거나 더 많은 정보가 필요하면 알려주세요.

다음은 서비스 구성 코드의 일부입니다 :

this.Description.Behaviors.Add(new FaultConversionErrorHandler()); 
this.Description.Behaviors.Add(new LoggingErrorHandler()); 

BasicHttpBinding binding = new BasicHttpBinding(); 
binding.Security.Mode = BasicHttpSecurityMode.Transport; 

ServiceEndpoint endpoint = this.AddServiceEndpoint(typeof(ILicenseService), binding, String.Empty); 

SecurityEndpointBehavior securityEndpointBehavior = new SecurityEndpointBehavior(); 
endpoint.Behaviors.Add(securityEndpointBehavior); 

을 그리고 여기에 클라이언트가 서비스를 참조하는 방법은 다음과 같습니다

EndpointAddress a = new EndpointAddress(licenseServiceUrl); 
Binding b = new BasicHttpBinding(BasicHttpSecurityMode.Transport); 

LicenseServiceClient client = new LicenseServiceClient(b, a); 
client.Endpoint.Behaviors.Add(new SecurityEndpointBehavior()); 
+0

나는 가까운 문제에 직면했다. ([내 질문] (http://stackoverflow.com/questions/16979346/wcf-service-stop-responding-nexpectedly-with-error-client-authentication-schem)) 문제를 해결 했니? 그렇다면 내 문제를 해결하도록 도와 줄 수 있습니까? – srcnaks

답변

0

당신은 당신의 바인딩 정보를 변경하여 해결할 수 있습니다. IIS SSL 설정에서 필요한 인증서를 사용하려면 TransportClientCredential Type을 인증서로 설정하십시오.

Ws-Http 인 경우 약간 다릅니다. WCF WS 서비스 호스트는 들어오는 클라이언트 요청 인증서가 신뢰할 수있는 사용자에게 있는지 실제로 확인합니다. 원격 인증서가 서버의 신뢰할 수있는 사용자에게 제공되어야합니다.

또는 CustomValidator를 추가하고 동작을 재정의하십시오.