node.js - 如何允许特定服务器访问我的API?

标签 node.js api server keystonejs

我正在使用node.js、express和mongodb编写一个API,它将在另一台服务器中使用。我只希望该服务器(或将来的更多服务器)能够访问我的 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 地址。

我强烈鼓励您对 API 使用某种形式的身份验证(预共享 key ),而不是基于 IP 的过滤。您可以使用Passport使用 Express 为您的 API 添加各种身份验证方案。

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

关于node.js - 如何允许特定服务器访问我的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692203/

相关文章:

node.js - 如何进行突变查询以在 GraphQL 中插入(数组)字段列表

node.js - 向 module.exports 添加参数?

android - 无法更新 firebase 版本

node.js - 安装 Node.js 后出现 npm 错误 : Cannot find module 'es6-promisify'

php - Facebook API 访问 token

c# - 连续读取 CF 上的多个 TCP 连接

Azure Functions 应用程序 + Auth0 提供程序,使用身份验证 token 调用 API 时收到 401

api - Google+ OAuth 授权错误(无效 token )

php - 用户语言设置 - 获取设置和显示它的最有效方式

node.js - digital ocean 水滴中的环境变量