We have an application distributed across various client computers, which we don't want them to be accessing the server endpoints anymore. They are using WCF SOAP protocol. We don't want to change our endpoints since they will hurt other applications that we still want to work. Also, I cannot change the source code of the application we want to block since God knows how many people are using it and finding them and deploying it on those machines will be painful. It seems like I am asking for impossibility but perhaps someone has experienced a similar problem and found a workaround. I was thinking that perhaps there is a unique data in the message that is coming from that specific application that we can check and block accordingly. For instance, I have enabled the tracing in WCF and this is a activity XML log that I am reading:
As you see, there is a <Execution ProcessName/>
element. It stores the name of the process (in this case an .exe file). However, from what I am reading, it belongs to the trace element, and not really being pushed to the server. If there is something like that in the message, then I can read it on the server side and block any requests coming from that process. As far as I am seeing from the Envelope, we are not sending any custom data that identifies the client process.
Any suggestions?