3

직접 채널 인터페이스를 통해 SecurityMode: Message의 WSHttpBinding을 사용하여 WCF 서비스에 대한 최소 클라이언트를 구축하려고합니다.채널 인터페이스를 통한 메시지 수준 보안을 지원하는 최소 클라이언트

나의 현재 코드는 매우 간단하다 :

EndpointIdentity i = EndpointIdentity.CreateX509CertificateIdentity(clientCertificate); 
EndpointAddress a = new EndpointAddress(new Uri("http://myServerUrl"), i); 
WSHttpBinding b= new WSHttpBinding(SecurityMode.Message); 
ChannelFactory<IRequestChannel> channelFactory = new ChannelFactory<IRequestChannel>(b, a); 
channelFactory.Open(); 
IRequestChannel channel = channelFactory.CreateChannel(); 
channel.Open(); 
Message response = channel.Request(requestMessage); 

clientCertificate가 제대로로드됩니다. 그러나 나중에 모든 함수를 올바른 방법으로 호출하면 확실하지 않습니다.

사실은 다음 코드의 마지막 줄은 SspiNegotiation의 목적을 위해 대상 주소 'http://myServerUrl'의 ID를 기반으로 서비스 사용자 이름을 확인할 수없는 내용

클라이언트와 MessageSecurityException 발생/Kerberos. 대상 주소 ID는 UPN ID (예 : acmedomain \ alice) 또는 SPN ID (예 : host/bobs-machine) 여야합니다.

이 문제의 원인은 무엇일까요?

답변

0

기본 ClientCredentialType은 Windows 인 것 같습니다. 그래서 Sspi/Kerberos와 관련된 오류가 발생합니다. 자격 증명 유형으로 "인증서"를 지정하고 클라이언트 자격 증명 컨테이너에서 실제 인증서를 설정해야합니다. 자세한 내용은이 링크의 클라이언트 섹션을 참조하십시오.

http://msdn.microsoft.com/en-us/library/ms733098.aspx