使用MvcHandler为每个请求添加带访问令牌的授权标头

时间:2014-11-19 19:00:06

标签: asp.net-mvc asp.net-mvc-4 oauth-2.0

我正在尝试为资源服务器实施OAuth 2.0资源访问。我已经获得了一个令牌,并希望将该令牌传递给资源服务器,以便资源服务器可以使用授权服务器验证每个请求,并在http头中传递令牌 (例如授权:Bearer mF_9.B5f-4.1JqM)。

我正在使用MVC 4,我被告知应该使用MvcHandler来实现这一点但是我不知道从哪里开始。谁能指出我应该做些什么的大方向?我已经拥有大量的操作和控制器,并希望将这一层置于其中,而不是回到每个操作并更改和/或装饰每个操作。

1 个答案:

答案 0 :(得分:2)

使用身份验证过滤器

  

身份验证过滤器是ASP.NET MVC中的一种新型过滤器   在ASP.NET MVC管道中的授权过滤器之前运行   允许您指定每个操作,每个控制器的身份验证逻辑,   或全局的所有控制器。验证过滤器过程   请求中的凭据并提供相应的主体。   身份验证筛选器还可以添加身份验证挑战   回应未经授权的请求。

您只需要根据需要实施IAuthenticationFilter注册即可。

public class YourAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
    {
        public void OnAuthentication(AuthenticationContext filterContext)
        {            
        }

        public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
        {   
            if (user.Identity.IsAuthenticated == false)
            {
                 filterContext.Result = new HttpUnauthorizedResult();
            }
        }
    }

如果您想将其全局添加为 FilterConfig.cs

中的全局过滤器
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new YourAuthenticationAttribute());
}

更多信息:

ASP.NET MVC 5 Authentication Filters

ASP.NET MVC 5 Authentication Filters

AUTHENTICATION FILTERS IN ASP.NET MVC 5

FINALLY THE NEW ASP.NET MVC 5 AUTHENTICATION FILTERS!