ASP.NET Web API 2承载令牌认证和资源授权

时间:2015-03-02 10:00:39

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

当我们构建ASP.NET Web API端点时,我们可以使用[Authorize]属性来保护它们,我们可以使用承载令牌来验证请求并调用端点。

我的问题是关于授权以及在身份验证成功后我们如何更好地授予对资源的访问权。

例如,如果存在端点api/contracts/details并且想要限制对特定人员的访问,我就是在讨论SQL表字段(对象属性)甚至是整个表。如何实现这一目标?

我觉得角色不是最好的选择。有什么建议吗?

用户注册后,他可以生成在请求持有者令牌时必须出现的client_idclient_secret。我可以在令牌中添加client_id作为声明。

在数据库中我有这样的表:

  • 用户(用户详细信息)
  • 客户端(client_id,client_secret ......等)
  • RefreshToken(refresh_token,受保护的票证)

我可以创建另一个名为Access的表,其中我指定了所有允许的enpoints(客户端表 - >访问表到多个关系)

访问表:

  • API /用户
  • API /装置
  • API /产品

然后我可以创建一个消息处理程序并检查所有传入的请求。解码承载令牌,解压缩client_id并在Access表中查询允许的端点。如果传入请求与允许的端点匹配,则让它通过,否则拒绝它。

这应该可行吗?

1 个答案:

答案 0 :(得分:0)

您最好使用角色属性,但您需要创建TokenValidationHandler。检查这个优秀的答案here

相关问题