一种让一个服务授予对另一服务中的资源的访问权限的RESTful方法是什么?

时间:2019-12-27 15:12:23

标签: rest microservices api-design

我有两种不同的服务:用户和文档。

用户服务的主要资源是用户(users.example.com/users/:userId),并通过帐户和support-admin权限管理对用户的访问控制。

文档服务拥有文档资源(documents.example.com/documents/:docId)。文档具有广泛的访问控制权,因为它们可以共享,发布,包含在共享文件夹中等。在获取文档时,它将引用某些用户(例如所有者,或最后一位编辑文档的人)。

"document": {
  ...
  "owner": "users.example.com/users/:userId",
  ...
}

任何获取文档的人也应该有权获取有关这些用户的用户信息(firstName,lastName等)。但是,如果我们仅返回用户URI(users.example.com/users/:userId),则它们将必须传递用户服务的访问控制,这些访问控制对于文档的共享/发布/等方式一无所知。用户服务不能依赖于文档服务,因为文档服务已经依赖于用户服务。

我想出的解决方案是在Document-service中创建一个新的端点,该端点还返回用户信息(documents.example.com/documents/:docId/owner)。它将通过文档检查访问控制,从用户服务中获取用户信息(使用系统用户身份验证),然后将用户信息返回给调用者。我不喜欢这种解决方案,因为文档服务本质上只是代理用户服务资源。同时,我无法提出更好的建议。好奇是否有人想到了这个问题并且有什么见识?

0 个答案:

没有答案