请求使用来自请求

时间:2015-09-29 13:19:26

标签: c# .net owin

我正在运行一个带有多个控制器的OWIN服务器。我有一个处理客户端证书验证的OWIN中间件。

对于我的新控制器,我需要一个额外的授权步骤。

我的控制器POSTurl将是:www.myUrl.com/api/newController/{service_id}。客户将同时传递客户证书。 客户仅被授权更改特定service_ids。我需要验证带有证书X的客户端X是否有权修改URL参数中传递的service_id_1。我将client_cert - >存储了service_ids映射。

对于单个控制器,这是最好的方法吗?我假设添加一个Owin中间件不是正确的方式,因为所有控制器的所有请求都将通过它。

1 个答案:

答案 0 :(得分:1)

我认为这里最好的解决方案是检查控制器操作中的正确访问权限,或创建自定义授权属性,并在内部实现您的特定方案。

用于内联检查您的操作我认为您知道该怎么做,对于自定义授权属性,这是您需要做的。

您需要创建自定义授权属性并覆盖OnAuthorization方法,然后在其中您需要从请求参数中读取提交的证书,并进行检查以授权或不授权来自当前操作的调用者,基于证书和请求的serviceID。

创建自定义授权属性的示例可以在下面找到:

public class CertificateAuthorizationAttribute : AuthorizeAttribute
{      
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        // your custom logic here
        base.OnAuthorization(actionContext);
    }
}

我的建议:因为这是特定于此操作方法而不是一般授权问题,我会在您的方法中进行检查,如果这需要针对多个控制器/操作进行扩展,那么我可能会去用于自定义授权属性。