직접 채널 인터페이스를 통해 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) 여야합니다.
이 문제의 원인은 무엇일까요?