WebHttpBinding을 기반으로 자체 호스팅 WCF REST 서비스가 있습니다. 서비스의 방법 중 하나는 다음과 같은 : 전송 보안 및 클라이언트 인증서를 사용할 때 WCF rest service에 데이터를 POST 할 수 없습니다.
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "myMethod")]
Stream MyMethod(Stream contents);
은 내가 HttpWebRequest를이 방법을 시도하고 POST하여 데이터를 생성하는 간단한 테스트 프로그램을 썼습니다. 이 시나리오는 다음과 같은 경우에 유용합니다.
- 서비스는 보안 기능을 사용하지 않습니다.
- 서비스가 클라이언트 인증서없이 전송 보안 을 사용 중입니다.
- 서비스가 클라이언트 인증서 및 I POST 0 바이트의 전송 보안 을 사용 중입니다.
클라이언트 인증서가있는 전송 보안을 0 바이트 이상 사용하려고하면 서비스가 HTTP 403 (금지됨)을 반환하고 코드에 절대 도달하지 않습니다.
이것은 나를 미치게합니다.
아이디어가 있으십니까? HTTP.SYS에 대한 추적을 활성화 한 후
UPDATE
, 나는 추적에 다음과 같은 메시지가 관찰 : 클라이언트 인증서를받을 수있는 서버 응용 프로그램에 의해
시도 상태로 실패했습니다 : 0xC0000225합니다.
이게 무슨 뜻인지 아시나요? 클라이언트 인증서를 보내고 있으며 호스트 컴퓨터에서 신뢰할 수 있다는 것을 확신합니다.
우리는 전송 레벨 보안 및 클라이언트 인증과 함께 wcf 스트리밍을 사용하고 있습니다. 그러나 우리의 봉사는 셀프 호스팅됩니다. IIS에서 wcf를 호스팅하고 있습니까? 어떤 버전? Windows 사용자와 클라이언트 인증서를 매핑 했습니까? –
글쎄, 그건 희망이야. 우리는이 서비스를 자체 호스팅하고 있습니다. 클라이언트 인증서는 사용자 계정에 매핑되지 않습니다. 우리는 사용자 지정 역할 공급자를 사용하고 있습니다. –