【发布时间】:2020-06-16 09:18:29
【问题描述】:
假设我有一个包含一堆团队的 API。连接到这些团队的是用户和其他资源,例如日程安排。
在数据库中,我们有两个用户。
- 用户 1 是团队 1 和 3 的成员
- 用户 2 是团队 2 的成员
您将如何处理权限以确保只有用户 1 可以访问团队 1 和 3 而不是团队 2 的资源?
每次用户想要访问团队资源并检查是否允许这样做时都查询数据库是个坏主意,对吧?一定有更好的做事方式。
我的第一个想法是将用户所属的所有团队放入令牌中的声明中。
这样我就可以读取令牌,检查特定团队的声明是否存在,如果存在,则表示允许用户访问资源。
但我最近读到这不是声明的目的。
【问题讨论】:
-
源不一定是数据库。您还可以将信息存储在配置文件中,如local PolicyServer 所示。这完全取决于您希望如何管理信息以及您需要它的位置。在访问令牌中拥有权限(用户授权)更糟糕。请查看Policy Server 网站以获得一些解释。
标签: api rest .net-core identityserver4 claims