【发布时间】:2015-09-03 15:56:19
【问题描述】:
为了简化我的情况,我目前有 3 个微服务。
- 身份验证
- 地点
- 库存
身份验证服务对用户进行身份验证并发送回 JWT 访问令牌,我在其他服务中使用它。它是无状态的,一切正常。
我在定位服务中设置了位置以及其他一些东西,这运行良好且符合预期。
但现在我在库存服务中,我需要添加一些库存,但它已链接到一个位置。我可以轻松地在 API 调用中传递 locationId,但我无法授权当前用户向该位置添加内容,除非我随后调用位置服务来验证这一点。
这会在彼此之间创建服务依赖关系,这是我试图不惜一切代价避免的事情,否则你只会失去微服务的大部分好处。
验证当前用户是否拥有该位置的权限的推荐方法是什么?到目前为止,我唯一想到的就是
- 让位置 API 发出另一个访问令牌,并附加声明他们有权访问哪些位置。
- 或者发出另一个完全独立的某种令牌,并通过标头将其传递给库存微服务,以执行类似于 JWT 身份验证方式的验证。
编辑
正如下面提到的提供聚合根(或者我假设这与 API 网关相同),它将提供另一个服务的第三个选项,以便与两者进行通信以提供信息。
但是它使第 3 个服务依赖于其他 2 个服务,所以我只是增加了我的服务依赖项。
【问题讨论】:
-
在谷歌中寻找
aggregate和aggregate root。它是一个非常适合微服务的事务元素。
标签: architecture microservices