首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web套接字上进行身份验证?

如何在web套接字上进行身份验证?
EN

Stack Overflow用户
提问于 2021-05-11 12:44:46
回答 1查看 301关注 0票数 0

为什么我要使用websockets?

我正在通过WebSocket路由我所有的HTTPS请求,因为我的应用程序有一个聊天功能,我需要在应用程序运行时保持WebSocket打开,那么为什么不直接通过它路由所有请求呢?

我的问题,

事实证明,这样做更容易。是否应该使用相同的访问令牌&刷新令牌来验证客户端身份验证。或者应该在连接打开时验证它,然后只要它打开就可以信任它。以下是我的问题:

wss( WebSocket secure)足以阻止处于attacks?

  • Should中间的人,我为每个WebSocket连接生成一种票证类型的机制,该机制持续2-10分钟,然后断开连接并要求客户端重新连接?

  • ,或者我应该为客户端的每一个请求提供一个访问令牌。

  • 如何确保当服务器发送它要发送的数据时,我只是结束了对所有有效负载的加密,以避免出现许多问题?
EN

回答 1

Stack Overflow用户

发布于 2021-05-11 12:51:12

,或者我应该在连接打开时验证它,然后只要它打开就可以信任它。

只要连接是通过受信任的通道(例如ssl/tls ),就可以这样做。

  1. (网络套接字安全)足以阻止中间人的攻击??

是。Wss只是ssl/tls上的ws。

  1. 是否应该为每个WebSocket连接生成一种票证机制,该机制持续2-10分钟,然后断开连接并要求客户端重新连接?

我不知道你为什么要这么做。相反,与聊天一样的应用程序,你希望保持连接打开尽可能长。虽然我建议在客户端实现ping调用,在服务器端实现超时。使用这种方法,您可以要求客户端每隔30分钟执行一次操作。

  1. ,或者我应该有一个访问令牌来处理来自客户端的每一个请求.

不必了。使用ssl/tls,您可以对整个连接进行一次身份验证,只需记住在经过身份验证的服务器端。令牌与传统的HTTP一起使用,因为水平扩展这样的应用程序更容易,例如,连接到哪个服务器并不重要,您甚至可以在调用之间切换服务器,这不会影响auth。但是对于类似聊天的应用程序(或任何需要双向通信的应用程序),连接必须是持久的,因此令牌会带来不必要的开销。

  1. 如何确保当服务器发送数据时,它将发送到正确的客户端.

我不知道你这么说是什么意思。这正是tcp + ssl/tls所保证的。安全tcp上的任何其他协议都是一样的。或者你的意思是在应用程序级别?那么,一旦经过身份验证,您就必须匹配具有相应连接的用户。服务器必须跟踪这个。

  1. 是否应该对所有有效负载进行端到端加密以避免许多问题?

什么问题?E2E加密的用途非常不同:它保证您,即.a。服务器无法读取消息。它保护高度的隐私,甚至连服务器也不能读取消息,只有对等服务器。因此,这是一个商业决策,而不是技术或安全决策。你想完全控制谈话吗?那么很明显,你不能和E2E一起去。另一方面,如果您想给您的用户提供最高级别的隐私,那么这是一种很好(如果不是强制性的)方法。请注意,与非E2E相比,功能齐全的E2E本质上更难实现。

我需要在应用程序运行时保持WebSocket打开,那么为什么不直接路由所有请求通过它呢?

这是一个有趣的方法。我自己也在考虑这么做(而且很可能会尝试一下)。其优点是整个通信通过单一的协议,这更容易调试。另一个优点是,有了适当的协议,您可以获得更高的性能。缺点是传统的HTTP是很好的理解,有很多的工具和子协议(例如REST)覆盖它。安全性、二进制流(例如文件服务)等通常是不受限制地管理的。所以感觉有点像重新发明轮子。不管怎样,我祝你好运,希望你能回到我们身边,告诉我们事情进展如何。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67487034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档