我有一个 Web API,我需要为其实现自定义身份验证和授权。授权应由资源和操作定义,如下所示:
[Authorize("users","view")]
public async Task<IHttpActionResult> GetAsync()
{
}
有什么方法可以使用自定义授权过滤器并实现这一点吗?
此外,Web API 受客户端证书保护,调用方是请求标头中传递的密钥标识符。密钥使用自定义身份验证筛选器进行身份验证。
雷加拉兹,
John
是的,您可以创建自定义授权并放在需要授权的控制器或方法上。
示例如下
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";
}
}