【发布时间】:2020-06-24 07:24:22
【问题描述】:
我正在研究微服务应用程序,现在正在考虑如何处理服务到服务调用中的安全性。
为简单起见,假设我只有两个服务:
- API 网关(暴露在互联网上)
- 服务 A(在 DMZ 中,只能通过 API gtw 访问)
服务 A 有一个 POST 端点,假设 POST /customers 创建一个客户。
我在 Api Gateway POST /gtw/customers 上也有 POST 端点。这样做的方式是进行一些验证(调用其他服务),如果一切正常,那么它将请求委托给服务 A。
我想要实现的是服务 A 中的端点只能由 API 网关调用(因此应用了验证)。我正在考虑两种方法:
- 通过 JWT 令牌保护服务 A 中的端点,API 网关将生成令牌,然后它可以调用服务 A 中的端点
- 保持原样,因为服务 A 在 DMZ 中运行,因此无法直接调用它(所以基本上它是在“基础设施”级别进行保护的)。
通过 JWT 令牌处理服务到服务的身份验证是一种好方法吗?
【问题讨论】:
-
据我所知,在微服务架构中,解决该问题的最常见方法是仅接受来自相互验证的服务的请求 - 即您的 API 网关和服务 A 之间通过 mTLS我>。这里似乎有一些关于 JWT+mTLS 的好信息,使论点“当微服务的身份不相关,但最终用户(系统或人)的身份是,你应该更喜欢使用 JWT 而不是 mTLS。在在这种情况下,服务本身不会相互验证。” :livebook.manning.com/book/microservices-security-in-action/…
标签: rest security jwt microservices