【发布时间】:2017-08-05 01:22:42
【问题描述】:
我将Play framework for Java 用于应用程序。我试图通过在多个服务器上部署应用程序的副本并在数据库中有一个可配置的节点列表来使其分布,这些节点必须能够相互通信。在 MongoDB 中,列表以 JSON 格式存储,如下所示:
{
"master": "host1.com:2678",
"nodes": ["host2.com:2678", "host3.com:2678", "host4.com:2678"]
}
部署在每台服务器上的代码是相同的,但调度程序仅在主节点上启用,并将根据节点的繁忙程度将特定工作调度到节点。此处未提供代码,因为调度程序操作的细节对我的问题并不重要。
为了知道他们有多忙,安排事情和其他状态更新,节点需要能够相互通信。 Play Framework 的 Web Service client 允许我通过从一个节点向另一个节点发出 HTTP 请求来做到这一点
HttpResponse res = WS.url("http://host2.com").get();
但这个想法是,特定的 HTTP 请求(例如用于调度的请求)仅在来自另一个节点(无论是主节点还是从节点)而不是来自 Web 浏览器、curl 等的情况下才被允许. 我如何安全地做到这一点?我可以检查传入请求的主机或特定标头,但这些肯定很容易伪造吗?
【问题讨论】:
标签: java security playframework playframework-2.0