我正在草拟一个简单的应用程序,它将包含三个松散耦合的服务:身份验证(在 spring 安全性下使用 OAuth2)、配置文件和首选项、数据收集。我正在尝试确定保护或构建这些服务之间安全调用的最佳方法。考虑以下两个用户案例。在每种情况下,用户都已通过身份验证,并且请求将包含到初始服务端点的有效 JWT token :
案例 1:用户想要编辑他们对首选水果的偏好。应用程序将对 Profile/Preference 服务进行经过身份验证的调用以获取他们的首选项,然后 POST 回更新的首选项。
案例 2:他们向数据收集服务发出请求,该服务将轮询杂货店 API 以获取水果价格。这需要从配置文件和偏好服务中查找他们喜欢的水果。
我的问题是保护上述案例 2 的配置文件和首选项服务的最佳方法是什么。我觉得有以下三种可能的方法:
跨当前用户上下文传递的 header
作为 API 用户的方式
未公开暴露并连接到内部负载平衡器中
仅限流量
这是 Spring Boot 的一个方面提供的开箱即用的东西吗?
最佳答案
既然微服务带来了独立应用的思想,“智能应用和哑管道”,你已经可以摆脱解决方案 3。 ,这将需要某种基于网络的安全性。
如果我可以用我自己的术语来翻译您的问题:
你想做什么:客户端 -> App1 -> App2
问题:如何保护从 App1 到 App2 的调用
剩下的两个解决方案:
的问题解决方案 2。是它可能带来许可问题:
如果调用 App1 的客户端没有调用 App2 的权限(范围),则 App1 无论如何都会调用 App2,因为 App1 会以自己的名义拥有该权限。
结论:解决方案 1。是唯一可行的。
关于spring - 在 Spring Boot 中保护内部微服务调用的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32480278/