0

I'm having a hard time wrapping my head around some architectural elements to securing a core WCF service that is consumed by many different applications.

Internally, we have an application that allows HR folks to update a peron's details. This is contained in a WPF app. Externally, we have a website that would allow individual people to authenticate (throuh an AD Membership provider) and update their details.

We don't want users to be able to see other user's information (for obvious reasons). But we don't want to host this service inside the same web application that the users would log into. Here is how the architecture would look from a visual studio perspective:

ServiceApplication

WpfApplication

MVCWebApplication

They don't exist inside the same domains, for example, the service application would be hosted at http://www.service1.com/Service.svc and the mvc application would be hosted at http://www.updateyourprofile.com . So a user logs into http://www.updateyourprofile.com and we'd like to hit a Wcf service via JSON. Both the service application, wpf application, and mvc web application would use AD credentials to authenticate. But how do we secure the service so that users who log into the mvc web application can only see their information?

Most of the examples I see say to use the HttpContext.Current.User check inside the service. But since the user authenticated at a different site, how does the cookie transfer? Do you end up having to publish your service inside the same web application that you want to consume so that the cookies travel transparently?

Or is it just not possible to have a centrally located service with disparate applications that use the same authentication store to determine who has access to what on the service?

Josh
  • 10,352
  • 12
  • 58
  • 109

1 Answers1

0

What you are looking for is some kind of federated authentication system which is used by all the entry points. That is what Windows Identity Foundation can help you to build.

Inside each application, access control would be claims-based, according to the claims embedded in each user's security token issued by the authentication system.

There's an entire book on the subject on MSDN.

Chris Dickson
  • 11,964
  • 1
  • 39
  • 60