【问题标题】:How to organize microservice endpoints used by different types of users?如何组织不同类型用户使用的微服务端点?
【发布时间】:2021-12-16 07:44:50
【问题描述】:

我知道对此没有单一的解决方案,但我想听听有关该问题的不同最佳方法。

让我澄清一下,假设我们有一个订单微服务和两种使用此服务的用户。[买家(网站)和后台(管理站点)用户。]

我的问题是微服务是否应该了解用户类型并决定根据用户类型返回哪些数据?

假设我们的端点是 ; api.mycompany.com/orders

所以当买家调用这些端点时,服务应该返回买家的订单,但如果后台用户调用服务应该返回所有订单数据。

我认为这种情况有 3 个选项,

1.在端点识别用户类型,做一些if-else逻辑并返回相关数据。

2.为买方和后台用户提供单独的端点。 (/buyer/orders, /admin/orders)

3.用户不知道微服务。只需传递用户ID作为过滤选项。

所以我正在努力寻找最合乎逻辑的方法。

【问题讨论】:

  • 老实说,我不知道这种情况的最佳实践,但发现这个问题真的很有趣。我可能会使用带有角色装饰器的版本 3(在打字稿中)。渴望听到其他解决方案!
  • 您是使用 OAuth2.0 Saml 还是其他方式来保护您的 API?如果是,您可以通过验证令牌来完成,管理员或买家的授权应该不同。这将是一个基于角色的授权模型。

标签: api authorization microservices api-design


【解决方案1】:

正如您所提到的,此设计决策取决于您正在处理的用例。但是,在设计微服务 API 时,您必须考虑到服务的耦合性。

在我看来,您应该选择选项 3。 我会制作一个身份验证中间件来检查请求是来自买家还是管理员。如果用户尝试访问来自管理员的订单,订购服务将返回“无法访问的资源”错误。如果有安全要求,我建议使用 JWT 令牌对用户进行身份验证。

更多信息: https://microservices.io/microservices/2021/01/04/loosely-coupled-services.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2021-01-05
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    相关资源
    最近更新 更多