Ben*_*ars 5 architecture soa authorization microservices
假设我在博客应用上有三种类型的用户
要管理此系统,我要提供三项主要服务:
现在,我正在努力的是资源的所有权(以及应该在哪里检查所有权)。
在不与其他服务进行通信的情况下,授权服务将如何确定用户是否应该能够访问他们拥有的内容,而又不知道如何确定用户是否拥有给定资源。
我对这个问题提出了几种不同的解决方案,尽管我对它们都不满意。
寻找关于替代方法的想法,或者洞悉解决此问题的最佳解决方案。
由于它是外部化的,授权服务应该尽可能“愚蠢”。有时基于业务逻辑和数据的“授权”可能会变得非常复杂。我认为业务逻辑属于负责管理它的服务。此外,API 网关可能需要向客户端提供所有权状态(通过管理这些博客文章的服务?),以便客户端知道要公开什么。因此,请保持授权简单,并封装更复杂的业务检查,以查看服务本身可以做什么。
另一种方法是增强授权服务以采用另一个参数,在本例中是所有权状态。API网关或其他检查授权的服务(Blog Post Manager?)可以首先从了解所有权业务的服务获取所有权状态,然后使用提供角色和所有权状态的授权服务。权限规则将(可选)基于角色和真/假指示器。授权服务不知道 true/false 的含义,只是为角色“Reader”+ Indicator=true 和角色“Administrator”+ Indicator=false 或角色“ Administrator ”+ 授予权限“Edit Post”指标=真等