如何在websocket javascript客户端中传递授权承载访问令牌

Posted

技术标签:

【中文标题】如何在websocket javascript客户端中传递授权承载访问令牌【英文标题】:how to pass Authorization Bearer access token in websocket javascript client 【发布时间】:2018-05-17 10:50:13 【问题描述】:

我的 API 管理器工具要求我应该通过 websocket 调用传递授权承载访问令牌。 他们提供了执行此操作的 java 代码示例。

不记名令牌设置为(“授权”,“不记名 e2238f3a-e43c-3f54-a05a-dd2e4bd4631f”)。我如何在 javascript 中做到这一点?

// HttpResponseDecoder to WebSocketHttpResponseDecoder in the pipeline.
final WebSocketClientHandler handler = new WebSocketClientHandler(
    WebSocketClientHandshakerFactory
        .newHandshaker(uri, WebSocketVersion.V13, null, 
            false, new DefaultHttpHeaders()
                .add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f"))); 

这就是他们在java中的做法 有没有这样的方法可以从我的 java 脚本 [Angular2] Web 应用程序中做到这一点?我怎样才能从 UI 传递这个? 任何基于 Websocket 的测试工具都可以模拟这个吗?

【问题讨论】:

Is it possible to use bearer authentication for websocket upgrade requests?的可能重复 【参考方案1】:

我在这里找到了这个答案: https://***.com/a/26123316/1715121

"由于 Javascript WebSocket API 的设计,目前无法使用 Authentication 标头。 更多信息可以在这个线程中找到: HTTP headers in Websockets client API

但是,Bearer 身份验证类型允许一个名为“access_token”的请求参数:http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#query-param 此方法兼容 websocket 连接。”

【讨论】:

以上是关于如何在websocket javascript客户端中传递授权承载访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python(带有 websockets 的服务器)和 JavaScript(客户端)接收 JSON 数据

websocket的客户端端口号如何在谷歌浏览器中获取

JavaScript 客户端无法连接到 Spring 4 WebSocket

使用 websocket javascript 客户端发送文件

Websockets PHP / AJAX / Javascript 刷新客户端

.NET 的 HTML5 WebSockets 客户端