[Mono-dev] WCF: netTcpBinding
Karsten Fourmont
fourmont at gmx.de
Tue Dec 21 15:44:37 EST 2010
Hi,
thanks to the quick fix for the Datetime serialisation issue (thank you
Atsushi!), I'm getting closer to moving my WCF heavy project over to
Mono. (Well the server side actually, client's WPF...)
But now I think I hit the biggest barrier: security & netTcpBinding.
Here are my requirements for the WCF communication:
1. I need a duplex service
2. A NATed/firewalled client must be able to initiate the connection.
3. secure session with username/password authentication.
4. Low overhead (performance & message size) for big chunks of binary data
So imho netTcpBinding (or even customBinding) is the way to go. In .NET
s.th. like this works fine (server side config):
<netTcpBinding>
<binding name="serverTcp">
<security mode ="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
<transport clientCredentialType="None"/>
</security>
</binding>
</netTcpBinding>
...
<behavior name="serverBehaviour">
<serviceCredentials>
<serviceCertificate findValue="myCert"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="My.Validator, MyDll" />
</serviceCredentials>
</behavior>
The Security Mode is TransportWithMessageCredential as Transport
encryption via ssl has a lower performance overhead (afaik) but for some
"MS only knows" reason it doesn't offer Username credentials. So Message
security is used for auth with a custom validator class.
I didn't manage to get this config running on Mono: for starters I don't
know how to let the server know about the certificate's private key
which it needs for the ssl connection. I can provide the certificate by
using Mono's certmgr, but this is only the public key part, suitable for
the client.
If I run it anyway I hit a "NotImplementedException"
So I fear even with the private key worked out, getting this kind of
advanced configuration (or s.th. similar) up and running is not
something that can be done with Mono right now. Or can it? Is there
something I can do to help?
Any input and getting Mono WCF up to a configuration that meets the 4
requirments above as good as possible is highly welcome.
Other options might be to go over Http Bindings and maybe do duplex by
some clever polling. There's a interesting looking thing at
http://code.msdn.microsoft.com/duplexhttp
Cheers,
Karsten
More information about the Mono-devel-list
mailing list