Asp.net web api ASP.NET Web API 2承载令牌身份验证和资源授权

Asp.net web api ASP.NET Web API 2承载令牌身份验证和资源授权,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,当我们构建ASP.NET Web API端点时,我们可以使用[Authorize]属性来保护它们,并且可以使用承载令牌来验证请求并调用端点 我的问题是关于授权以及如何在认证成功后更好地授予对资源的访问权 例如,如果有一个端点api/contracts/details,并且希望限制特定人员对它的访问,那么我将讨论SQL表字段对象属性,甚至整个表。如何做到这一点 我觉得在这里,角色不是最好的选择。有什么建议吗 或 在用户注册之后,他可以生成一个客户端id和客户端密码,在请求承载令牌时必须提供这些id

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

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

例如,如果有一个端点api/contracts/details,并且希望限制特定人员对它的访问,那么我将讨论SQL表字段对象属性,甚至整个表。如何做到这一点

我觉得在这里,角色不是最好的选择。有什么建议吗

在用户注册之后,他可以生成一个客户端id和客户端密码,在请求承载令牌时必须提供这些id和密码。我可以将客户端id添加为令牌内的声明

在数据库中,我有如下表:

用户详细信息 客户端id,客户端密码。。。等 刷新令牌刷新\u令牌,受保护的票证 我可以创建另一个名为Access的表,其中我指定了多个关系上所有允许的enpoints Client table->Access table

访问表:

api/用户 api/设备 原料药/产品 然后我可以创建一个消息处理程序并检查所有传入的请求。解码承载令牌,提取客户端id并查询允许端点的访问表。如果传入请求与允许的端点匹配,则让它通过,否则拒绝它


我想这应该行得通吧?

您最好使用roles属性,但您需要创建一个TokenValidationHandler。检查这个极好的答案

我不需要在委托处理程序中有自定义令牌验证过程,因为承载身份验证令牌只需使用控制器上的Authorize属性或api控制器内的操作即可为我实现这一点。