为了简化我的情况,我目前有三个微服务:
我在位置服务中设置了位置等内容,这也很好地按预期工作。
但现在我正在处理库存服务,我需要添加一些库存,但它与某个位置相关联。我可以轻松地通过API调用传递locationId,但我没有办法授权当前用户向该位置添加物品,除非我调用位置服务进行验证。
这将在各个服务之间创建服务依赖关系,这是我尽力避免的事情,否则您将失去大部分微服务的好处。
那么,验证当前用户是否具有该位置的权限的推荐方法是什么呢?我迄今想到的唯一方法是:
如下所述,提供聚合根(或我假设与API网关相同)将提供第三种选项,即另一个服务在顶部通信以提供信息。
但是,它会留下一个依赖于两个其他服务的第三个服务,这样我就增加了我的服务依赖性。
- 认证
- 位置
- 库存
我在位置服务中设置了位置等内容,这也很好地按预期工作。
但现在我正在处理库存服务,我需要添加一些库存,但它与某个位置相关联。我可以轻松地通过API调用传递locationId,但我没有办法授权当前用户向该位置添加物品,除非我调用位置服务进行验证。
这将在各个服务之间创建服务依赖关系,这是我尽力避免的事情,否则您将失去大部分微服务的好处。
那么,验证当前用户是否具有该位置的权限的推荐方法是什么呢?我迄今想到的唯一方法是:
- 让位置API发放另一个访问令牌,其中包含他们可以访问的其他位置的附加声明。
- 或者发放另一个完全独立的令牌,并通过标头将其传递给库存微服务,以进行类似于JWT身份验证的验证。
如下所述,提供聚合根(或我假设与API网关相同)将提供第三种选项,即另一个服务在顶部通信以提供信息。
但是,它会留下一个依赖于两个其他服务的第三个服务,这样我就增加了我的服务依赖性。