我有Node.js TCP服务器框架,它充当连接到许多TCP客户端的中央TCP服务器,这些TCP客户端是传感器收集和发送数据。这本质上是一种机器到机器的通信,其中TCP客户端建立连接并开始发送数据。服务器必须进行身份验证,然后处理数据。
我想做什么? ---> 通过识别每个客户端并确保它们位于数据库的用户列表中来对其进行身份验证。
我可以通过其ip和端口识别每个传入的客户端。但是,每个客户端都有一个动态IP。这意味着我不能依赖它与我的数据库中的列表进行比较。
我的目标是确保每个连接都有效并且是我的用户数据库的一部分。我正在考虑实施一个'应用层&#39 ;传感器(客户端)和TCP服务器都知道它们匹配的字符串。当客户端设置连接时,它会发送此字符串,服务器使用它来与数据库中的列表进行比较。通过这种方式,客户端会发出'关键字'每次建立连接。
如果这是一种可行的方法,我该如何使用node.js' NET'模块只在建立连接时才发出关键字?我没有看到任何这样的规定。
此外,是否有更好的方法来识别M-M连接中的客户端?任何指针都会有所帮助。
答案 0 :(得分:0)
Node-RSA将为您做到这一点。
否则,
使用socket.write函数发送数据。然后,如果另一个节点应用程序正在侦听另一方,您可以利用套接字数据事件来获取发件人已写入的内容。如果您只希望某些机器连接到您的机器,我确实建议使用密钥,如果它们的IP地址不是静态的。虽然要注意这并不是完全安全的,因为人们可以进行暴力攻击。使用一个散列字符串的密钥可以最大限度地减少某人实际猜测您的密钥的可能性。字符串可以是任何东西,只要你们两个都拥有它。创建和共享相同的功能甚至更好,它每隔一段时间就会改变字符串,以获得更高的安全性。 请注意,这并不像第一个选项那样安全,但它确实仍然存在。