Identification error failed for outgoing message. Expected identity

If the wcf service will work on my machine.

Moved it to the server, and now I get the above error.

I issued a test certificate on the server.

Here is my client configuration.

<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <loadFromRemoteSources enabled="true"/> </runtime> <system.serviceModel> <bindings> <wsDualHttpBinding> <binding name="WSDualHttpBinding_IMessageHandlerServer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" clientBaseAddress="http://192.168.1.74:8081"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" /> <security mode="Message"> <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" /> </security> </binding> </wsDualHttpBinding> </bindings> <client> <endpoint address="http://192.168.1.100:8080/" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IMessageHandlerServer" contract="MessageService.IMessageHandlerServer" name="WSDualHttpBinding_IMessageHandlerServer" behaviorConfiguration="myClientBehavior"> <identity> <certificate encodedValue="AwAAAAEAAAAUAAAA9fenyF3cSS38ldDDxtUyC8TajBAgAAAAAQAAALgBAAAwggG0MIIBYqADAgECAhD3kPMzVBbXlEAT5S65MldSMAkGBSsOAwIdBQAwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3kwHhcNMTEwMjExMTU0MDMwWhcNMzkxMjMxMjM1OTU5WjAXMRUwEwYDVQQDEwxNeVNlcnZlckNlcnQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ9D8W2GBGvwTAZ2eQj12atxPruZxuOwTCLXRwtEvpnoLmlwBuxo7Wb+of0k4XTNLa7q/Xvjh3zsJbvevlPG3hk9+ugds/Je5X69uPbQApYJO2HZNY9hrwfMZ40iaJ54vVAkdnIhDT5pEpmKVFFkPangk1aMyb6Ilm4NjO9bUxjFAgMBAAGjSzBJMEcGA1UdAQRAMD6AEBLkCS0GHR1PAI1hIdwWZGOhGDAWMRQwEgYDVQQDEwtSb290IEFnZW5jeYIQBjdsAKoAZIoRz7jUqlw19DAJBgUrDgMCHQUAA0EAGT7q1aZwAaJ4sMbv53BOo2/yVSpYkTRIaQwT0uYdY1SLyJ7uaUwqJR0jG+nNqwgyOEOfg4Tz0/dX740dw12+1Q==" /> </identity> </endpoint> </client> <behaviors> <endpointBehaviors> <behavior name="myClientBehavior"> <clientCredentials> <serviceCertificate> <authentication certificateValidationMode="Custom" customCertificateValidatorType="MyX509Validator,MessageHandlerClient" /> </serviceCertificate> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> </system.serviceModel> </configuration> 

EDIT

Initializing the proxy server is as follows, but this is not the place where the error occurs ...

 InstanceContext context = new InstanceContext(new MyCallback()); Configuration stockConfiguration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = @"C:\Users\Ash\Desktop\Config\app.config" }, ConfigurationUserLevel.None); ConfigurationDuplexChannelFactory<MessageHandlerClient.MessageService.IMessageHandlerServerChannel> stockChannelFactory = new ConfigurationDuplexChannelFactory<MessageHandlerClient.MessageService.IMessageHandlerServerChannel>(context, "WSDualHttpBinding_IMessageHandlerServer", null, stockConfiguration); stockChannelFactory.Credentials.UserName.UserName = "test"; stockChannelFactory.Credentials.UserName.Password = "test"; stockClient = stockChannelFactory.CreateChannel(); 

The error occurs when I make a call using a proxy, for example

 stockClient.messageToServerWithoutDirectReturn(moduleName, moduleType, methodName, inputs); 

Please let me know if you need more information.

Yours faithfully

Ash

+8
c # wcf x509certificate wcf-security
source share
2 answers

Since you moved the client to another server and use the new certificate, you will need to renew your node identity / certificate:

  <identity> <certificate encodedValue="..." /> </identity> 

It probably still points to the client id store and certificate

+12
source share

You have two ways to change it.

 <identity> <certificate encodedValue="the value of base64 encoded value of the certificate that you are using"> </identity> 

or

 <identity> <certificateReference findValue="thumbprint" storeLocation="LocalMachine" storeName="My"> </identity> 
+1
source share

All Articles