Question

Was curious if there was a way to check if a user is authenticated before making a method call and then returning a custom object and not completing the call if they aren't. For example:

We set the user principal in the Application_PostAuthenticateRequest in the global.asax to the user making the request if they are authenticated or to an anonymous user if they aren't. Currently in all methods that require authentication we have something similar to the following code:

public Result GetSomeObject()
{
         if (HttpContext.Current.Request.IsAuthenticated)
         {

         }
}

Bottom line: We want to be able to check IsAuthenticated BEFORE we let WCF get inside the method on methods that require authentication, and if true, continue, if not, return a Result object (JSON) with an authentication error.

Was it helpful?

Solution

What you need to develop is called ServiceAuthorizationManager in WCF. You can find more information about this on:

http://pieterderycke.wordpress.com/2011/04/07/implementing-restricted-access-to-a-wcf-service-with-the-serviceauthorizationmanager/

OTHER TIPS

You can write a custom httpmodule to intercept the requests to the service layer and do the authentication in there.

This article may be a starting point for what you are looking for: http://pieterderycke.wordpress.com/2010/12/04/extending-wcf-creating-a-logging-component/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top