如何让特定的服务器访问我的API?

我正在编写一个API,使用node.js,express和mongodb,这将在另一个服务器中使用。 我只希望只有那个服务器(或者将来更多)能够访问我的API。 我怎样才能做到这一点?

如果您只想根据其他服务器的IP进行限制,则可以定义一个快速中间件来检查每个传入请求,如果IP不正确,则返回一个错误。

一个例子可能是这样的:

var app = express(); app.use(function (req, res, next) { if (req.ip !== '1.2.3.4') { // Wrong IP address res.status(401); return res.send('Permission denied'); } next(); // correct IP address, continue middleware chain }); 

如果您的API位于一个或多个代理(或负载平衡器)之后,则应该启用“信任代理”选项( http://expressjs.com/guide/behind-proxies.html )。

这个中间件将根据您请求的传入请求的IP地址来限制对您的API的访问。

然而,这是相当脆弱的,因为如果你移动你的服务器会发生什么? 您现在需要更新您的API应用程序以接受不同的IP地址。

我强烈build议您为您的API使用某种forms的身份validation(预共享密钥),而不是基于IP的过滤。 您可以使用Express来为您的API添加各种身份validationscheme。

最后,无论哪种情况,如果您确实关心API的安全性,则应该确保您的API受到TLS / SSLencryption的保护。

在处理程序之前添加一个中间件并validationreq.ip
您可以使用选项初始化中间件,以便IP列表可configuration。