开发者

Intercept WCF Method Call and "Re-route" based on Authentication status

开发者 https://www.devze.com 2023-02-17 23:01 出处:网络
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

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.


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/


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/

0

精彩评论

暂无评论...
验证码 换一张
取 消