相关疑难解决方法(0)

Websockets客户端API中的HTTP标头

看起来很容易使用任何支持此功能的HTTP头客户端向您的websocket客户端添加自定义HTTP标头,但我无法找到如何使用JSON API执行此操作.

然而,似乎应该在规范中支持这些标题.

任何人都知道如何实现它?

var ws = new WebSocket("ws://example.com/service");
Run Code Online (Sandbox Code Playgroud)

具体来说,我需要能够发送HTTP授权标头.

javascript header http websocket

170
推荐指数
10
解决办法
15万
查看次数

是否可以对websocket升级请求使用承载认证?

打开websocket连接的升级请求是标准HTTP请求.在服务器端,我可以像其他任何一样对请求进行身份验证.就我而言,我想使用Bearer身份验证.不幸的是,在浏览器中打开websocket连接时无法指定标头,这会让我相信使用承载身份验证来验证Web套接字升级请求是不可能的.所以 - 我错过了什么,还是真的不可能?如果不可能,这是设计,还是在websocket API的浏览器实现中明显疏忽?

authentication authorization websocket

20
推荐指数
2
解决办法
2万
查看次数

续订WebSocket连接的令牌的最佳做法是什么?

这可能是基于意见的,但我仍然怀疑是否有最佳实践,因为我对websocket实践几乎一无所知

我有一个从我自己获得JWT令牌的SPA OP.然后它使用该JWT连接到我使用REST和WebSockets的其他服务.

就REST来说,它非常简单:

  • REST API验证JWT(已发送Authorization: Bearer ...)并提供对受保护资源的访问,或者使用a响应401,让SPA知道它需要请求新令牌.

现在有websockets:

在加载SPA期间,一旦我获得了令牌,我就打开了一个WS到我的web服务.我发送的第一条消息是login_message我的JWT,然后我保留在服务器的websocket实例上以了解谁在发送消息.我收到的每个后续消息,我都会验证JWT是否已过期.

据我所知,一旦它到期,我面临两个选择:

  1. 删除websocket时会token_expired出现某种错误,并在令牌刷新后强制浏览器建立新的websocket连接.

  2. 保持websocket打开,返回错误消息并发送新的登录消息(刷新​​令牌后)

  3. 不要使用登录消息,只需在每个请求中发送JWT.

问题:您会推荐哪种方法?为什么?在安全性和性能方面.我没有列出其他常见做法吗?

websocket jwt openid-connect

15
推荐指数
1
解决办法
922
查看次数