我正在尝试为资源服务器实施OAuth 2.0资源访问。我已经获得了一个令牌,并希望将该令牌传递给资源服务器,以便资源服务器可以使用授权服务器验证每个请求,并在http头中传递令牌 (例如授权:Bearer mF_9.B5f-4.1JqM)。
我正在使用MVC 4,我被告知应该使用MvcHandler来实现这一点但是我不知道从哪里开始。谁能指出我应该做些什么的大方向?我已经拥有大量的操作和控制器,并希望将这一层置于其中,而不是回到每个操作并更改和/或装饰每个操作。
答案 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