Silverlight basic authentication to wcf service from within SL

Silverlight basic authentication to wcf service from within SL

Old forum URL: forums.lhotka.net/forums/t/10470.aspx


Charleh posted on Tuesday, June 28, 2011

I've created a Silverlight 4 app which is hosted in a DMZ away from the client's network - the client opens the application without authentication over SSL, then the app attempts to connect to a WCF service using basic authentication

When the app attempts to hit the WCF service, I get a login prompt - this is expected, but is there any way to send the authentication credentials from the SL app instead, thus avoiding the need for the IE popup?

i.e. can basic authentication to a webservice work from within the SL app, and how do I do it. I'm currently looking through the CSLA src, but I'm not great with webservices

Charleh replied on Friday, July 01, 2011

Figured it out - I'm using the CompressedProxy class from Rockys demos - I just overrode the GetProxy method and added the following code which adds the username/password to the header of the request - works like a charm!

 WcfPortalClient proxy = base.GetProxy();

var creds = "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(UserName + ":" + Password));

var contextScope = new OperationContextScope(proxy.InnerChannel);

var httpProps = new HttpRequestMessageProperty();

httpProps.Headers[HttpRequestHeader.Authorization] = creds;

OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpProps;

return proxy;

ajj3085 replied on Saturday, July 02, 2011

Nice solution, thanks for sharing!

Charleh replied on Monday, July 04, 2011

Only problem I've got now is that incorrect auth details still cause an IE popup as the app isn't handling the service response - if I figure that out, I'll drop the details here

Copyright (c) Marimer LLC