看起来很容易使用任何支持此功能的HTTP头客户端向您的websocket客户端添加自定义HTTP标头,但我无法找到如何使用JSON API执行此操作.
任何人都知道如何实现它?
var ws = new WebSocket("ws://example.com/service");
Run Code Online (Sandbox Code Playgroud)
具体来说,我需要能够发送HTTP授权标头.
我的Angular 2应用程序(用typescript编码)有一个简单的身份验证方案:
abc123...Authorization标头中发送JWT现在我想添加websockets.我想知道如何在那里验证用户.由于我不控制哪些头发送到websocket服务器(WS),我无法发送JWT.
到目前为止我的想法(尚未实施):
let sock = new WebSocket('wss://example.com/channel/');open套接字上的事件.套接字打开后:
type='auth' payload='JWT_VALUE'auth.收到后,服务器读取有效负载,验证JWT_VALUE并设置isAuthenticated标志
isAuthenticated发送任何其他类型的消息,服务器将断开套接字2个问题:服务器资源可以由连接但从不发送JWT的客户端占用,如果客户端未经过身份验证,则更干净的解决方案会阻止握手.
其他想法:
new WebSocket('wss://example.com/channel/<JWT>/')
如何在websockets上验证客户端?假设用户已经通过HTTP登录并且Angular 2应用程序具有JWT令牌.