我有一个微服务架构应用程序。我有一个CompanyService,一个OrderService和一个TransactionSevice。用户登录并且他可以加载他公司的所有订单。所以订单有一个CompanyId。然后它加载该订单的所有交易,因此该交易具有OrderId。我正在经历一些安全想法。如何确保用户仅加载或保存属于其公司的订单的交易。我的意思是TransactionService不需要知道公司(CompanyId)。这是我应该在保存之前检查的东西吗?例如,检查orderid是属于公司还是有其他模式?
由于
答案 0 :(得分:1)
我的想法:
你的第一个微服务将是
GetOrders(int userId)
在其中,您需要检查userId拉哪家公司
你的第二个电话将是
GetTransactions(int orderId)
根据您想要的安全程度,您还可以执行以下操作:
GetTransactions(int orderId, int userId)
要在API滥用的情况下,请检查拨打电话的用户是否属于正确的公司。所以基本上,是的,你必须检查用户是否属于他们正在进行交易的公司。
答案 1 :(得分:0)
您可能更喜欢通过接口服务添加某种程度的编排,以便用户与其他服务进行交互……这需要权衡,例如可能会造成瓶颈和单点故障。
用户的接口/代理服务可以强制正确使用 API。
另一个选项,如其他答案中提到的,是在内部使用令牌,但每个其他服务可能必须使用身份验证服务验证该令牌,然后使用 userId 从其他服务请求数据。