我在AWS上托管了几个微服务(Springboot)。例如,假设Service1和Service2是两个微服务。 Service1是可由前端和移动应用程序访问的微服务。 Service1调用Service2。 Service2完全是内部的。
我已经设置了位于Service1前面的Amazon API Gateway。我已经使用cognito配置了Authentication(Oauth)。
所有这些都有效。从前端/应用程序调用时,需要先通过API网关对请求进行身份验证,然后才能到达Service1。
但是我的问题是,如果Service1需要与Service2通信,考虑到我正在使用AWS,哪种身份验证最合适?
我可以重新使用API网关生成的令牌吗?这样,Service1可以在其请求中将其转发给Service2,并且Service2以某种方式通过网关进行验证。可能吗?如果是,这是个好主意吗?
在某些情况下,Service1与Service2通信而没有来自前端/应用程序的请求(cronjob)。在这种情况下,通信不会通过API网关进行,因此不会生成令牌。我应该如何处理案件。
我不想引入Oauth身份验证来在两个内部微服务之间进行身份验证。我觉得这有点过分了。有更好的方法吗?
答案 0 :(得分:1)
一个有效的选择是拥有2级API:
例如: * Online Sales UI调用Online Sales API *在线销售API调用订单和客户微服务
OAuth访问令牌中的用户上下文可以从入口点API传递到微服务-或令牌本身可以转发
这也表现不错,并且避免了对Cognito的过多调用。
答案 1 :(得分:0)
2级API是一个好主意。 我认为,服务之间的通信也应得到保护。由于其他服务将在锁定的虚拟私有云中的联合国环境中运行,因此您只需在服务中使用 基本身份验证 即可。这就是我们在组织中所做的事情。