NodeJS和Express-安全区分发出请求的客户端

时间:2020-11-10 17:26:00

标签: node.js api express authentication cross-domain

当前,我正在从事一个项目,该项目需要跟踪并验证来自不同客户端的用户。这些客户中的每一个都是一个单独的网站。在数据库中,它们以其凭据存储,如下所示:

email: {
  type: String,
  required: true
},
security: {
  password: {
    type: String
  },
  apiKey: {
    type: String
  }
},
client: {
  type: mongoose.Types.ObjectId,
  ref: 'Client',
  required: true
},

如果它们来自客户端本身,则应该能够使用电子邮件/密码组合进行登录;如果它们试图直接与API进行交互,则应使用电子邮件/ apiKey组合进行登录。

好吧,我现在的问题是,根据他们的请求来源,我在服务器上看不到任何可靠的身份验证方法。

此外,即使用户未经身份验证,客户端应用程序也具有来自服务器的读取权限以显示项目。

如果没有电子邮件/ apiKey组合的客户端之外的任何人,我如何确定这些用于读取数据的端点不能访问。

我研究了以下解决方法:

  • 试图依赖Origin头,我认为这不是一个好主意。似乎可以将其从Postman更改为任意设置。
  • 试图依赖于请求所附带的IP。到目前为止,这似乎是最好的主意,因为每个客户端网站都有一个静态IP,并且我认为该值不能在外部更改。
  • 我还尝试生成令牌,该令牌必须与来自客户端的每个请求同时传递。但这也不是一个好主意,因为可以在“网络”选项卡中看到并复制该令牌。

您有什么建议吗?我应该采用IP方式吗?还是有更好的解决方案?

谢谢!

0 个答案:

没有答案