我有一个web api,我需要实现自定义身份验证和授权。授权应由资源和行动定义,如下所示:
[Authorize("users","view")]
public async Task<IHttpActionResult> GetAsync()
{
}
有什么方法可以使用自定义授权过滤器并实现它吗?
此外,web api受客户端证书保护,并且调用者是按键标识符,在请求标头中传递。密钥使用自定义身份验证筛选器进行身份验证。
Regarads,
约翰
答案 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";
}
}