自定义授权 - Web Api

时间:2017-03-29 02:59:42

标签: asp.net-web-api asp.net-web-api2 asp.net-identity

我有一个web api,我需要实现自定义身份验证和授权。授权应由资源和行动定义,如下所示:

[Authorize("users","view")]
public async Task<IHttpActionResult> GetAsync()
{
}

有什么方法可以使用自定义授权过滤器并实现它吗?

此外,web api受客户端证书保护,并且调用者是按键标识符,在请求标头中传递。密钥使用自定义身份验证筛选器进行身份验证。

Regarads,

约翰

1 个答案:

答案 0 :(得分:2)

是的,您可以创建自定义授权并放置需要授权的控制器或方法。

示例示例如下

public class CustomAuthorize : System.Web.Http.AuthorizeAttribute
    {
        private string Resource { get; set; }
        private string Action { get; set; }
        public CustomAuthorize(string resource, string action)
        {
            Resource = resource;
            Action = action;
        }
        public override void OnAuthorization(
               System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            base.OnAuthorization(actionContext);
            //Check your post authorization logic using Resource and Action
            //Your logic here to return authorize or unauthorized response 
        }
    }

在这里,您可以执行自定义授权逻辑,样本控制器将如下所示

public class DoThisController : ApiController
{
    [CustomAuthorize("users","view")]// for specific methods
    public string Get()
    {
        return "Sample Authorized";
    }
}