WebApi

时间:2016-04-24 08:05:53

标签: api security asp.net-web-api authorization

我将为我的Web API项目实现Authorization。为此,我一直在阅读各种博客,关于WebApi中授权的堆栈溢出答案。

我推荐的两种方法是使用自定义授权过滤器或使用在任何过滤器之前执行的Web API消息处理程序。

我对我的项目有非常明确的要求。

1)我实施了第三方认证服务。只有在经过身份验证后,请求才会进入Web API管道。我只需要执行授权。

2)我所有控制器中的所有操作都需要授权。 (无匿名访问)

3)我需要执行三个级别的授权。

      a) Module Level (to see if user has access to said module)

      b) Record Level (if user has access to module see if he has access to particular resource accessing)

      c) Action Level (if user has access on both see if user can perform the said action [View/edit/delete/create]

4)我的所有网址都遵循一些预定义的模式{api / module / resource / resourceid}&动作GET,POST,PUT,DELETE

我的要求是,我不想在任何动作或控制器上注册任何属性。我想推断所有传入的请求并根据它来授权用户。 (使用委托处理程序)

我正在尝试使用以下方法:

1)来自传入的请求url提取模块名称,资源名称,资源ID& Cookie中的用户ID,并将此信息传递给将返回true或基于某些业务规则的函数。

示例:

GET API - api / modulename1 / resource1 / id - >此URL将检查对modulename1,resource1&的VIEW访问权限。资源ID

POST API - api / modulename1 / resource1 - >此URL将检查CREATE对modulename1,resource1

的访问权限

删除&同样的事情编辑。

我想在这里向专家询问这种方法是否有效或者这种方法是否有任何限制的问题。

0 个答案:

没有答案