Hi Karsten,

(2010/12/22 5:44), Karsten Fourmont wrote:
> 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...)
>
Thanks for the nice bug report :)

> 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"
>

I have no idea on where you get the exception, but TcpTransport security 
support is not there yet. I guess it is documented in [MC-NMF] as SSL 
protocol upgrades
though.

> 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?
>
One (slightly) better approach is to avoid configuration. It is 
extraneous stack to the actual code implementation for us and often left 
not-implemented.
I'm not sure if we can spend time on implementing it in the near future.

> 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
Indeed. I tried MoMA on it and found that most of the warnings are about 
missing configuration support. It might be worth trying. Our HTTP stack 
supports HTTP-based authentication and should work on https too, and 
should work with
binary MessageEncoder. If the above resolves "duplex" requirement, then it's
likely an answer.

Atsushi Eno

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to