.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan
Asad Ali
Fauzul Azmi
Post New Web Links

WCF - Java web service interop - Signed outgoing message not accepted

Posted By:      Posted Date: September 14, 2010    Points: 0   Category :WCF
 
Hi, I try to sign a message using a certificate and a private key to call a java (JBoss) web service, but the server refuses to accept my signed message. It only echoes back the same message that I've sent. I have successfully signed the outgoing message using the certificate, and the structure of the message look alright when I compare it to an exampel message supplied by the web service creator. I use a custom binding declared as shown below <binding name="FSACustomServiceBinding"                  closeTimeout="00:01:00"                  openTimeout="00:01:00"                  receiveTimeout="00:10:00"                  sendTimeout="00:01:00">           <textMessageEncoding             messageVersion="Soap11" />           <security             authenticationMode="MutualCertificate"             requireDerivedKeys="false"             keyEntropyMode="ClientEntropy"        &nb


View Complete Post


More Related Resource Links

WCF and Java Web Service Interop -- WS-Securtity 1.0 with MutualCertificate

  
I am trying to use WCF to call a Java Web Service.  The Web Service has several security requirements based on the Basic Security Profile 1.0:- The client and service should both use certificates  - The certificates will be used to sign and encrypt the message.- In addition, a supporting UsernameToken should be included.Based on those requirements, it seems like I should be using the MutualCertificate (or MutualCertificateDuplex) authentication mode:<customBinding> <binding name="Custom11">  <textMessageEncoding messageVersion="Soap11" />  <security defaultAlgorithmSuite="TripleDesRsa15" allowSerializedSigningTokenOnReply="true"    authenticationMode="MutualCertificate" requireDerivedKeys="false"    includeTimestamp="true" messageProtectionOrder="EncryptBeforeSign"    messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"    requireSecurityContextCancellation="false">  </security>  <httpTransport /> </binding></customBinding>And then I need to add a supporting token for the user name.  Something like:BindingElementCollection elements = binding.CreateBindingElements();SecurityBindingElement security = elements.Find<SecurityBindingElement>();UserNameSecuri

WCF - Java web service interop - Problem with asymmetric binding

  
Hi, I try to communicate with a Java web service and run into the following error: Error: System.ServiceModel.Security.MessageSecurityException: The incoming message was signed with a token which was different from what used to encrypt the body.  This was not expected. Server stack trace:    at System.ServiceModel.Security.TokenTracker.RecordToken(SecurityToken token)    at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlDictionaryReader reader, Int32 position, Byte[] decryptedBuffer, SecurityToken encryptionToken, String idInEncryptedForm, TimeSpan timeout)    at System.ServiceModel.Security.ReceiveSecurityHeader.ExecuteFullPass(XmlDictionaryReader reader)    at System.ServiceModel.Security.StrictModeSecurityHeaderElementInferenceEngine.ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)    at System.ServiceModel.Security.ReceiveSecurityHeader.Process(TimeSpan timeout, ChannelBinding channelBinding, ExtendedProtectionPolicy extendedProtectionPolicy)    at System.ServiceModel.Security.MessageSecurityProtocol.ProcessSecurityHeader(ReceiveSecurityHeader securityHeader, Message& message, SecurityToken requiredSigningToken, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)    at System.ServiceModel.Security.AsymmetricSecurity

Design: Place XML Message Design Ahead of Schema Planning to Improve Web Service Interoperability

  

Web Services are all about exchanging data in the form of XML messages. If you were about to design a database schema, you probably wouldn't let your tool do it for you. You'd hand-tool it yourself to ensure maximum efficiency. In this article, the author maintains that designing a Web Service should be no different. You should know what kind of data will be returned by Web Service requests and use the structure of that data to design the most efficient message format. Here you'll learn how to make that determination and how to build your Web Service around the message structure.

Yasser Shohoud

MSDN Magazine December 2002


WCF client Java interop - No Response Headers = MessageSecurityEx

  
I am using a WCF client to communicate with a Websphere hosted web service.  The service requires my message to be signed, but not encrypted.  This is being done and works as expected.  I can see in my trace logs that I get a valid response back from the service.  However, it isn't making past the proxy becuase of the following error: System.ServiceModel.Security.MessageSecurityException: Security processor was un able to find a security header in the message. This might be because the message  is an unsecured fault or because there is a binding mismatch between the commun icating parties.   This can occur if the service is configured for security and the client is not using security. I've edited the binding to remove the timestamp and have verified that it is not being sent, however, I still get this error.   Here's what the header of my request looks like: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <s:Header> <ActivityId CorrelationId="b0d474df-8b00-4c30-bd05-d1e478529ce4" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">cb8e51de-83b4-4bfe-bf1c-fd92ce86f557</ActivityId> <o:Security s:mustUnderstand="1" xmlns:o="http://

MessageSecurityException "Identity check failed for outgoing message" when using custom endpointaddr

  
Hi! I am currently developing a WCF service which will use ASP.NET Membership and RoleProvider as authentication/authorization. I followed the description in on this page http://msdn.microsoft.com/en-us/library/ff647294.aspx to do this, and everything works as expected when I try add a reference to my development service and uses that without any interaction. But, I want to be able to override the enpoint address in code since the server may be placed on other servers, but when I do this in my code (with the same enpointAddress stated in the client wcf file for testing purpose) I get a MessageSecurityException with this information: "Identity check failed for outgoing message. The expected DNS identity of the remote endpoint was 'localhost' but the remote endpoint provided DNS claim 'MyCert'. If this is a legitimate remote endpoint, you can fix the problem by explicitly specifying DNS identity 'MyCert' as the Identity property of EndpointAddress when creating channel proxy." I have search the net for information about this, and found that the only thing I had to do was to add a <dns value="MyCert" /> to my client wcf configuration, and everything should work. But it doesn't, I still get the same error. My server behavior configuration looks like this: <serviceCredentials> <serviceCertificate findValue="CN=MyCert" />

.NET Client and Java Web Service Interoperability

  
I have a .net client that consumes an operation on a java based web service that appears to work accept for an issue with passing Boolean values back to the service in the soap message. Any member of the complex type that are defined as Boolean in the service contract will not be present in the soap message generated from the client even though they are set in the code. Sample Client Code: UpdateChecklistItemStatusPortTypeClient     proxy = new UpdateChecklistItemStatusPortTypeClient();     updateChecklistItemStatusReq request = new updateChecklistItemStatusReq(); request.ouid =   "P000122112"; request.applicationId =   "00000032"; request.adminFunction =   "ADMA"; request.checklistItemTypeCode =   "UHSTRN"; request.ceebCode =   "052046"; request.transcriptTerm =   "FINAL"; request.transcriptScores =   true;     updateChecklistItemStatusRsp response = new updateChecklistItemStatusRsp(); response = proxy.UpdateChecklistItemStatusOp(request); Client Soap Message Generated: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">   

WCF Security Interoperability with Java web service

  
Hi everybody, I'm implementing a WCF client which talks to a Java web service secured with x509 certificates and username token. The service requires both signing and encryption as message protection. Thanks to Yaron Naveh and some other guys on this forum I've managed to solve the signing stuff, but the encryption seems to be much more difficult. The problem I'm facing now is the server cannot decrypt my messages - I'm getting HTTP 500 errors. I've got a request example from the service vendor and compared with the messages my client generates, there is only one difference: in the example provided by service vendor I can see an extra tag KeyInfo under the EncryptedData, which seems to me reasonable to be there, but I don't know why WCF doesn't put that item. These are the two SOAP request sections I'm talking about: My WCF client: <s:Body u:Id="_1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <e:EncryptedData Id="_2" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns:e="http://www.w3.org/2001/04/xmlenc#"> <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/> <e:CipherData> <e:CipherValue> <!-- Removed--> </e:CipherValue> </e:Cipher

ws-addressing 'Action' required message part not signed exception

  
I have a WCF client calling a Java-based service. The service vendor is supporting WCF clients. The WCF client binding uses authenticationMode="MutualCertificate", messageVersion="Soap11WSAddressing10" and the message is signed and encrypted (SignBeforeEncrypt). WCF, in this case, is automatically signing all the ws-addressing ( <Action>, <MessageID> and <To> ) headers. The message gets to the service and comes back with what appears to be valid encrypted data in the response BUT the client is throwing a "The 'Action', 'http://www.w3.org/2005/08/addressing' required message part was not signed" exception (mscorlib). Questions: Is there a way to NOT sign the ws-addressing headers in the request message while still using both signing and encryption (X.509 certs)? If the client DOES sign the ws-addressing headers in the request, is there a way to configure WCF to accept UNsigned ws-addressing headers in the response? If the answer is NO on both questions, I guess I will have to ask the service vendor to sign the ws-addressing headers in the response. Thanks.

Windows Service Suddenly Stops with no logged message

  
Background: I have a windows service which hosts some wcf services and multithreading has been used there heavily. I'm using Enterprise Library to log messages, handled and unhandled.  AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;  private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)         {             Logger.Error("An unhandled exception has been thrown.", (Exception)e.ExceptionObject);         } Problem: The problem is that randomly my windows service stops on production and I get no log messages saying that the services stopped or what exception details. Question: I haven't created any new AppDomain explicitly. Shouldn't all the threads run in the same default CurrentDomain? if so, why nothing gets logged when the service stops suddenly? Thanks in advance.    

problem with calling soap service written (most probably in java)

  
Hi evebody, I'm experiencing problem calling third-party service written in java (mostprobably). When i call service i get following response: <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header></env:Header> <env:Body> <env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <faultcode>env:Server</faultcode> <faultstring>Content root name does not match element name: {http://foo.bar/}arg0 != arg0</faultstring> </env:Fault> </env:Body> </env:Envelope> I've used command line java utility provided by service provider and found following difference: soap request, generated by wcf (similar results with webservices)   <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <baz xmlns="http://foo.bar/"> <arg0 xmlns="">string value</arg0> <arg1 xmlns="">string value</arg1> <arg2 xmlns="">string value</arg2> </baz> </s:Body> </s:Envelope> request, generated by java utility: <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:baz xmlns:ns2="http://foo.bar/"> <arg0>string value</arg0> <arg

setting message sizes for wcf web service

  
Hi.    I am working on silverlight application that communicates with wcf web service. I have function on service side that takes string as parameter. like:    [OperationContract ]          bool DoSomeServiceWork (string imputText );    when i call this function (using auto generated proxy) asynchronously with string smaller than certain size (around 1000 chars) everything works fine.    As soon as string size gets larger, i get exception "The remote server returned an error: NotFound ."    Now it seems to me that problem is in message size so i tried to change maximum buffer, maximum message size everywhere in the confing files i could find them, but nothing helps.  It come to me that obviously i don't know what I'am doing so can someone help me out here ?    (i found in different forums many posts regarding maximum message size but nothing helped, most of them are suggesting changing values in various confing files but it seems it doesn't work, and there is nowhere explanation what those numbers actually change, because its obviously not parameter size for a function) I'm completely missing something out here. sending few kb to web service suppose to be easy, and I'm getting crazy here.    btw can somebody please give complete instructions

Setting message sizes for wcf web service

  
Hi.    I am working on silverlight application that communicates with wcf web service. I have function on service side that takes string as parameter. like:    [OperationContract ]          bool DoSomeServiceWork (string imputText );    when i call this function (using auto generated proxy) asynchronously with string smaller than certain size (around 1000 chars) everything works fine.    As soon as string size gets larger, i get exception "The remote server returned an error: NotFound ."    Now it seems to me that problem is in message size so i tried to change maximum buffer, maximum message size everywhere in the confing files i could find them, but nothing helps.  It come to me that obviously i don't know what I'am doing so can someone help me out here ?    (i found in different forums many posts regarding maximum message size but nothing helped, most of them are suggesting changing values in various confing files but it seems it doesn't work, and there is nowhere explanation what those numbers actually change, because its obviously not parameter size for a function) I'm completely missing something out here. sending few kb to web service suppose to be easy, and I'm getting crazy here.    btw can somebody please give complete instructions

WCF TCP-IP End Point Error : The message could not be dispatched because the service at the endpoint

  
"The message could not be dispatched because the service at the endpoint address 'net.tcp://192.168.237.129:9000/TerritoryMgt.svc' is unavailable for the protocol of the address." This is the Exception I am getting when I am trying to access my WCF Service with 'TCP-IP' end point. My Service Web.Config file is as follows. <system.serviceModel>     <bindings>       <webHttpBinding>         <binding name="JsonWebBinding">           <security mode="TransportCredentialOnly">             <transport clientCredentialType="Windows"></transport>           </security>         </binding>       </webHttpBinding>     </bindings>     <services>       <service behaviorConfiguration="SampleBehaviour" name="SeP.Library.ServiceLibrary.TerritoryMgt">         <endpoint address="" behaviorConfiguration="jsonEndPointBehaviour" binding="webHttpBinding" bindingConfiguration="JsonWebBinding"                &nbs

The message version of the outgoing message does not match that of the encoder

  

Need some help figuring this one out. I need to create a service that based on selected MessageVersion, creates an appropriate binding. Currently, I am only trying to test sending of a Soap11 message, problem is I keep getting the following Exception message and would appreciate some help with it.

The message version of the outgoing message (Soap11 (http://schemas.xmlsoap.org/soap/envelope/) AddressingNone <br/>(http://schemas.microsoft.com/ws/2005/05/addressing/none)) does not match that of the encoder <br/><br/>(Soap12 (http://www.w3.org/2003/05/soap-envelope) Addressing10 (http://www.w3.org/2005/08/addressing)).<br/> Make sure the binding is configured with the same version as the message.



StackTrace = "   at System.ServiceModel.Channels.MessageEncoder.ThrowIfMismatchedMessageVersion<br/>(Message message)\r\n   at System.ServiceModel.Channels.MtomMessageEncoder.WriteMessage<br/>(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset...


The code below is what I have

	CustomBinding basicbinding = new CustomBinding();

		basicbinding.Elements.Add(new MtomMessage

How to consume java base SOAP web service XWSS?

  

I have java base SOAP web service XWSS. I installed WES 3.0 + VS2008

When I’s setting Security.Takens.Add() I’m getting message:
SoapContext.Security is obsolete.
Consider deriving from SendSecurityFilter or ReceiveSecurityFilter and creating a custom policy assertion that generates these filters.

Does it require some web service updates?
Do you have any samples how to create Custom Policy?


calling JAVA web service?

  

 

Hi....

I am totally a beginner in web service. My vendor provide me a Java base web service and I just create a windows application to test it.  However, when i call the service, it returns including part of the previous result. My vendor doesn't know anything about .NET and they say should be my cookies problem. I tried many different methods but the problem still exist.

I add the web service by using service reference and I also have to change the allowCookies to "true" to make it work. My config as below, does anyone have any clue? I can only call the service using the second endpoint 12 because the endpoint 11 doesn't work at all.

 

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="SearchProcessServiceSoap11Binding" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostN
Categories: 
ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend