【发布时间】:2019-03-10 03:19:16
【问题描述】:
我还没有找到现成的答案,这让我觉得我问错了问题。如有必要,请随时(温和地或以其他方式)将我推向更好的道路。
我们使用专用的身份验证服务器,其目的是 (1) 给定登录凭据,返回具有近期 exp 的 JWT 或 (2) 给定 JWT,根据一组规则,发出一个新的智威汤逊。本质上是一次刷新。
这一切都很好,直到它被黑客入侵。但就目前而言,它是王牌。
然而,当涉及到socket.io 与非身份验证服务器的连接时,我们的想法不止于此。我想知道是否有人会这么好心来评估这个过程。 (我很高兴发布更多代码;你告诉我它是否相关)。
1) 初始socket.io 连接导致挑战:
this.socket.emit('authenticate'); // the challenge
this.authTimeout = setTimeout(() => {
this.socket.disconnect('unauthorized', errors);
}, TIME_TO_AUTHENTICATE); // the response kills this!
this.socket.on('authenticate', token => {
clearTimeout(this.authTimeout);
this._authenticate(token)
})
2) 后续消息必须包含以下形式的“有效负载”消息:
payload = {token: 'foo', message: 'bar'},如果有效则接受哪个令牌,如果无效则返回。
另外,资源服务器会定期发送自己的heartbeat,必须得到heartbeat {token}的确认。
我的问题是:这似乎太容易了;我在某处偷工减料吗?你能打败这个脆弱的防御工事吗?
为了清楚起见,我们希望在这里推出我们自己的模块。我很高兴看到现有的任何东西;只是还没有找到任何我可以开始说服老板完全满足我们需求的东西。
非常感谢。
【问题讨论】:
标签: node.js authentication socket.io jwt