假设我在博客应用上有三种类型的用户作者(能够修改自己的帖子但不能修改其他帖子)管理员(能够修改所有帖子)读者(不能修改任何帖子)至 …
由于它是外部化的,授权服务应该尽可能“愚蠢”。有时,基于业务逻辑和数据的“授权”可能变得非常复杂。我认为业务逻辑属于负责管理它的服务。此外,API网关可能还需要为客户端提供所有权状态(来自管理这些博客帖子的服务?),以便客户端可以知道要公开的内容。因此,保持授权简单,并封装更复杂的业务检查,以查看服务本身可以执行的操作。
另一种方法是加强授权服务以获取另一个参数,在这种情况下为所有权状态。 API网关或其他服务检查授权(Blog Post Manager?)可以首先从了解所有权业务的服务获取所有权状态,然后使用提供角色和所有权状态的授权服务。权限规则(可选)基于角色和真/假指示符。授权服务不知道true / false意味着什么,只是为角色“Reader”+指示符= true授予权限“编辑帖子”,并为角色“管理员”+指示符= false授予权限 的 要么 强> 角色“管理员”+指标=真等。
在我看来,你正在努力,因为你没有一次所需的所有信息。
为什么不使用JWT(JSON Web令牌)?
他们可以存储有效负载(例如用户权限,权限等),您可以轻松检查他们声称的是否属实。
https://auth0.com/learn/json-web-tokens/