views:

677

answers:

4

Is there a sample application for using WIF with a ASP.NET MVC application? Can someone help me get started trying to integrate both of these technologies?

+3  A: 

I found that by far the best example to get started with is Dominick Baiers StarterSTS.

Even if you don't use that as your STS, the tutorials on the site are a great starting point. There are no ASP.NET MVC tutorial specifically but I've got it working in just the same way as an ASP.NET WebForms.

So in short...

  1. Download WIF and the WIF SDK - http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx
  2. Download StarterSTS - http://startersts.codeplex.com/
  3. Follow the STS Introductory video - https://identity.thinktecture.com/download/startersts/v1/StarterSTS_InitialSetup.wmv
  4. Follow the ASP.NET Tutorial http://identity.thinktecture.com/download/starterSTS/v1/StarterSTS_FederatingWebApps.wmv
  5. Create a new MVC Project in VS 2010
  6. On the project right-click, select "Add STS reference" and follow the same wizard steps as the WebForms application. (to add the WIF information to your web.config file.)

Now when you try and log in to your MVC app, you'll use the StarterSTS Identity provider and it'll log you in..

If you debug in to any of your controller methods you'll now see you have a WIF "ClaimsPrinciple" (which implements IPrinciple and so is backward compatible)

One thing to note is that the tutorials only realy cover authentication.

To be able to log out from the MVC app...

Add a reference to Microsoft.IdentityModel

(a "known" bug is that it doesn't show up in the VS2010 Add Reference Dialog so you have to reference thr dll directly in C:\Program Files\Reference Assemblies\Microsoft\Windows Identity Foundation\v3.5\Microsoft.IdentityModel.dll)

In the templated MVC AccountControllers LogOff method you can now call...

WSFederationAuthenticationModule.FederatedSignOut(null, new Uri("https://RP/"));

where RP is the URI of your own MVC based Relying Party.

Once you have all this set up, using another STS such as ADFS (Active Directory Federation Services) is easy. (as you don't need to do anything other than reconfigure your app to use it.)

Hope this helps. It's all a bit of a minefield :-)

ChrisV
+1  A: 

There's a short, high-level article that should cover the basics here.

For real sample code, Microsoft's Identity Developer Training Kit includes examples in ASP.NET (as well as Silverlight and more).

Also, Microsoft published a lengthy PDF called "A Quick Guide to Claims-Based Identity and Access Control" which should be a helpful reference (chapter 3).

ewall
+2  A: 

Once you understand how WIF works with ASP.NET WebForms, take a look at the post here to create a custom Authorization Attribute in ASP.NET MVC

+1  A: 

A simple example of MVC + WIF can be found in the "Federation with Multiple Partners" chapter of the guide refered to above. Direct link is here: http: //msdn.microsoft.com/en-us/library/ff359105(v=PandP.10).aspx

The basics of how it works are documented here: http://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx

Eugenio

Eugenio Pace