ServiceStack API中的细粒度授权

时间:2017-08-08 18:32:12

标签: authorization servicestack

我正在使用ServiceStack开发一个大型API表面,并且我正在解决授权问题。最终用户需要能够在API请求级别定制给予各种角色的权限,即。哪个请求角色可以调用的消息/ http动词。

出于这个原因,我计划将角色保留在代码之外,而不是使用ServiceStack的RequiresRole属性。我计划在数据库中存储角色/权限关系。

我也使用JWT。由于API的大小,我担心在ServiceStack的内置权限系统中使用RequiresPermission属性,因为我知道权限填充在JWT中并且我不会赢得#t / t膨胀标题太多了。用户可能拥有数百甚至数千个权限。

我在考虑

1)在JWT中存储用户角色声明但不存储权限声明 2)创建一个自定义请求过滤器,根据用户在JWT中的角色,检查用户是否具有所需的权限(来自缓存的数据库表)。

这听起来像是在ServiceStack中实现我的授权需求的合理方法吗?我可能缺少哪些缺点?有没有办法使用内置的ServiceStack授权工具来实现我的目标,而无需使用自定义请求过滤器或过多地膨胀我的JWT?

1 个答案:

答案 0 :(得分:1)

是的,这听起来像是一种合理的方法,如果您使用JWT,您应该注意用户拥有的角色/权限数量,因为它会影响每个请求的有效负载大小,因此请求使用应用级别与ServiceStack的角色/权限断开连接的权限是一种很好的方法。