支持简单HTTP和Websocket的服务器上的用户身份验证

时间:2018-06-24 10:36:14

标签: http session authentication websocket

用户可以通过简单的HTTP或Websocket连接到服务器。

HTTP会话过期时,Websocket会话会发生什么? 关闭Websocket会话后,HTTP会话会发生什么?

如何在支持两种协议的服务器上处理用户身份验证?

3 个答案:

答案 0 :(得分:1)

通常来说,通常只有一个会话Cookie-HTTP会话。

由于WebSocket连接从HTTP开始,因此连接通常是在HTTP阶段进行身份验证的,并且仅在身份验证成功后才升级到WebSocket ...

...这取决于应用程序的设计,但通常是这种情况。

如果在建立WebSocket连接之后使会话无效,则该连接(通常)将一直保持打开状态并进行身份验证,只要连接持续有效(因为大多数应用程序在建立连接后不会重复身份验证阶段)。 / p>

答案 1 :(得分:1)

这实际上取决于您的应用程序如何处理它。如@Myst所述,通常只有一个会话cookie-HTTP会话。当该会话无效时,您的服务器应用程序可以关闭websocket,或者保持打开状态直到下一次建立连接。只是当您检查连接到websocket的会话时才有问题:仅当建立连接时?或何时收到消息?

答案 2 :(得分:1)

RFC 6455是定义WebSockets协议的文档,它没有规定用于验证客户端身份的任何特定方法:

  

10.5. WebSocket Client Authentication

     

此协议没有规定服务器在WebSocket握手期间可以对客户端进行身份验证的任何特定方式。 WebSocket服务器可以使用通用HTTP服务器可用的任何客户端身份验证机制,例如cookie,HTTP身份验证或TLS身份验证。

尽管WebSockets和HTTP可以从相同的基础架构(代理,过滤,身份验证)中受益,但是请记住HTTP和WebSockets是不同的通信渠道,并且在设计身份验证机制:一种常见的误解是,在托管Web应用程序中被身份验证的用户也在套接字流中也被身份验证。