如何保护服务器-服务器应用程序中的通信?

Posted

技术标签:

【中文标题】如何保护服务器-服务器应用程序中的通信?【英文标题】:How to secure communication in a server-server app? 【发布时间】:2016-01-11 06:09:44 【问题描述】:

我有一个基于微服务的网络应用程序。微服务通过公开的 REST API 相互通信。我想要一个简单而安全的解决方案来保护我的微服务之间的通信。我已经使用 JWT 协议来保护我的用户服务通信,但我不知道保护服务器-服务器通信的最佳方式。

更新: 我想要一种简单的方法来验证 API。是硬编码密钥和秘密或将它们放入配置文件然后使用它们对另一个端点进行身份验证的好方法吗? 我听说过 OAuth2 协议,但我担心它对我的需求来说有点过头了。那么,什么是验证 API 的简单安全的方法呢?

【问题讨论】:

防范什么?服务器之间的通信、身份验证、防篡改安全性? 你说得对,我没有具体说明。实际上,我需要一个认证系统。请看我的更新。谢谢 ***.com/questions/4817643/… - 有什么可以添加到您的问题中来解释为什么“Oauth2 是矫枉过正”? 我不是身份验证机制方面的专家,但是当我搜索 OAuth2 时,我发现它不是身份验证协议,也不是授权协议,而是用于委托。我想也许使用 OAuth2 假定将身份验证委托给第三方(Facebook、Twitter 等)或创建我自己的身份验证。 PS:我会检查您的链接并了解有关 OAuth2 的更多信息。谢谢 【参考方案1】:

您应该使用 HTTPS 以确保服务器之间的通信安全。就点对点安全(传输层安全)而言,这是要走的路。

但请记住,这并不意味着您将拥有消息级别的安全性(端到端安全性)。消息路径上的中介(即服务代理或其他服务和应用程序)将能够在处理消息内容时查看消息内容中的内容。

REST 依赖于 HTTP 提供的统一契约,因此您不能像使用 SOAP 那样使用 WS-Security 的高级特性。 SOAP 的安全功能提供了更广泛的选项,因此如果安全是您的关键,您绝对应该检查 SOAP Web 服务。

另外,看看this question。它与您的相关,我相信您会发现它很有帮助。

希望这会有所帮助!

【讨论】:

以上是关于如何保护服务器-服务器应用程序中的通信?的主要内容,如果未能解决你的问题,请参考以下文章

使用 TLS 保护 Kubernetes 服务

在 AppEngine 上保护 GWT 应用程序

保护与 Azure 存储的应用服务连接

保护 iOS 到 Web 服务的通信

保护 NodeJS RESTful API 和 React 客户端应用程序

fabric之使用传输层安全性(TLS)保护通信安全