Bugzilla – Bug 640357
WCF: Transport security over HTTPS does not work (very important for major business/enterprise integration scenarios)
Last modified: 2011-01-31 05:41:14 UTC
Created attachment 390365 [details] Repro code to show the bug Description of Problem: When I try to get Microsoft SL sample code for a WSTrustClient to work, it compiles in MT. But it throws at runtime with a System.NotImplementedException. Getting this to work is *very* essential, as it is the first step towards supporting Claims-based security and integration with security token services in enterprises. Steps to reproduce the problem: 1. See the attached repro. Compile and run it. 2. See the above mentioned exception occurring. Actual Results: Throws. System.NotImplementedException: The requested feature is not implemented. at System.ServiceModel.Channels.TransportSecurityBindingElement.BuildChannelFactoryCore[IRequestChannel] (System.ServiceModel.Channels.BindingContext context) [0x00000] in <filename unknown>:0 at System.ServiceModel.Channels.SecurityBindingElement.BuildChannelFactory[IRequestChannel] (System.ServiceModel.Channels.BindingContext context) [0x00000] in <filename unknown>:0 at System.ServiceModel.Channels.BindingContext.BuildInnerChannelFactory[IRequestChannel] () [0x00000] in <filename unknown>:0 at System.ServiceModel.Channels.Binding.BuildChannelFactory[IRequestChannel] (System.ServiceModel.Channels.BindingParameterCollection parameters) [0x00000] in <filename unknown>:0 at System.ServiceModel.ChannelFactory.CreateFactory () [0x00000] in <filename unknown>:0 at System.ServiceModel.ChannelFactory.get_OpenedChannelFactory () [0x00000] in <filename unknown>:0 at System.ServiceModel.ClientRuntimeChannel..ctor (System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.ChannelFactory channelFactory, System.ServiceModel.EndpointAddress remoteAddress, System.Uri via) [0x00000] in <filename unknown>:0 at System.ServiceModel.ClientBase`1+ChannelBase`1[TChannel,T].get_Inner () [0x00000] in <filename unknown>:0 at System.ServiceModel.ClientBase`1+ChannelBase`1[TChannel,T].BeginInvoke (System.String methodName, System.Object[] args, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 at SL.IdentityModel.Protocols.WSTrust.WSTrustClient+WSTrustClientChannel.BeginIssue (System.ServiceModel.Channels.Message message, System.AsyncCallback callback, System.Object asyncState) [0x00000] in <filename unknown>:0 at SL.IdentityModel.Protocols.WSTrust.WSTrustClient.OnBeginIssue (System.Object[] inValues, System.AsyncCallback callback, System.Object asyncState) [0x00000] in <filename unknown>:0 at System.ServiceModel.ClientBase`1[TChannel].InvokeAsync (System.ServiceModel.BeginOperationDelegate beginOperationDelegate, System.Object[] inValues, System.ServiceModel.EndOperationDelegate endOperationDelegate, System.Threading.SendOrPostCallback operationCompletedCallback, System.Object userState) [0x00000] in <filename unknown>:0 at SL.IdentityModel.Protocols.WSTrust.WSTrustClient.IssueAsync (SL.IdentityModel.Protocols.WSTrust.RequestSecurityToken rst, System.Object userState) [0x00000] in <filename unknown>:0 at SL.IdentityModel.Protocols.WSTrust.WSTrustClient.IssueAsync (SL.IdentityModel.Protocols.WSTrust.RequestSecurityToken rst) [0x00000] in <filename unknown>:0 at Thinktecture.Brewtecture.Silverlight.ApplicationService.TokenClient.GetIdentityTokenAsync (System.String idpAddress, IRequestCredentials credentials, Boolean skipResourceSts) [0x00000] in <filename unknown>:0 at IdentityModelDemo.AppDelegate.FinishedLaunching (MonoTouch.UIKit.UIApplication app, MonoTouch.Foundation.NSDictionary options) [0x00000] in <filename unknown>:0 Expected Results: This should just work. It works in SL. How often does this happen? Always. Additional Information: Thanks for your help!
Regardless of how essential it is for you, this "not implemented" feature cannot be CRITICAL. You cannot expect this feature implemented in mono in short term.
Would like to second that this is a significant deficiency in Mono's implementation of WCF. This impacts any scenario where you would use Message Security over HTTPS (in my case, UserName and Certificate based-auth). I started to go down the route of developing a patch to fully implement the TransportSecurityBindingElement class, but it looks like it would take a significant amount of refactoring down the stack to implement properly due to a number of assumptions ingrained around the SymmetricSecurityBindingElement and AsymmetricSecurityBindingElement classes. Would gladly help out, but would want to discuss the right way to go about this before diving in further. Thanks, Mike
There is always people who claim that "Entity Framework is important" "WPF is important" "WF is importatnt". We have limited development resources and won't do anything impossible. You can start discussing code on mono-devel-list (and you are welcome on it).