【发布时间】:2018-01-15 12:45:01
【问题描述】:
我正在创建一个主要由移动应用程序使用的在线商店 REST API。该计划是使用 Spring Cloud 框架和 Spring Cloud OAuth 的微服务架构来确保安全性。
我的问题实际上是关于微服务之间通信的最佳实践:我应该让每个服务注册自己的令牌,还是应该只传递用户的令牌?
例如,我有 3 个服务:用户服务、帐户服务、订单服务。 我已经能够实现两个创建订单的过程:一个传递用户的令牌,另一个是每个服务都获得自己的令牌。我对这两种方法都使用了 Feign。
所以对于选项 1:order-service -> GET account-service/account/current
order-service 调用 account-service,它根据令牌中的 userId 返回帐户。然后 order-service 为该帐户创建一个订单。
或者对于选项 2:order-service -> GET account-service/account/user-id/{userId}
order-service 从发送的 token 中获取 userId,使用自己的 token 调用 account-service,然后使用检索到的帐户创建订单。
我真的不确定哪个选项最适合使用。一个更好地分离信息,但随后需要两个 Feign Client。然而,另一个不需要 2 个客户端,并且将某些端点阻止到外部客户端变得更容易,但是它需要创建额外的端点并且几乎每个服务都需要挖掘 Authentication 对象。
你的想法是什么?有没有人完全以一种或另一种方式实施他们的系统?或者我的想法完全错误。
感谢任何帮助。
【问题讨论】:
标签: spring-security oauth-2.0 microservices spring-cloud spring-security-oauth2