If all your clients are .NET applications, consider using NetTcpBinding, which is safe by default. All message packets are signed and encrypted using TCP.
You can also control the level of protection on message contracts, providing granular control over specific headers or body elements.
You can use the ProtectionLevel property . The following options are possible: None, Signand EncryptAndSign.
- None disables message protection.
- EncryptAndSign provides a complete security message and default behavior.
- A sign means that the message must be signed, but not encrypted
WCF provides you with rich security features, check out Windows Communication Foundation Security for more details.