websocket - Websocket 的 OAuth2 身份验证 : Pass Bearer Token via Subprotocols?

标签 websocket oauth-2.0

我试图弄清楚将 oauth 持有者 token 传递给 websocket 端点的最佳方法是什么。
This SO answer suggests to send the token in the URL ,
但是,这种方法具有通过 URL 进行身份验证的所有缺点。讨论了安全隐患here
因此我想知道使用子协议(protocol)将 token 传递给服务器会有什么缺点?即,而不是将请求的子协议(protocol)视为常量列表。发送至少一个遵循以下语法的子协议(protocol),例如:authorization-bearer-<token> token 最终会出现在请求 header 中。
服务器在处理子协议(protocol)时将能够通过一些自定义代码轻松找到并处理 token 。
由于许多 websocket 实现应该支持传递子协议(protocol),这应该适用于很多客户端。

最佳答案

这对我有用,我用过这个 WebSocket client library .

您需要通过 Websocket Header 发送 OAUTH token ,下面是代码,希望对您有所帮助。

ws = factory.createSocket("wss://yourcompleteendpointURL/");
ws.addHeader("Authorization", "Bearer <yourOAUTHtoken>");
ws.addHeader("Upgrade", "websocket");
ws.addHeader("Connection", "Upgrade");
ws.addHeader("Host", "<YourhostURLasabovegiveupto.com>");
ws.addHeader("Sec-WebSocket-Key", "<Somerandomkey>");
ws.addHeader("Sec-WebSocket-Version", "13");
ws.connect();

关于websocket - Websocket 的 OAuth2 身份验证 : Pass Bearer Token via Subprotocols?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323743/

相关文章:

android - 如何在 Android 上获取 OAuth 2.0 的签名证书指纹 (SHA1)?

facebook - 知道为什么 Facebook Provider 在下面的代码中失败了吗?

google-chrome - 如何让 Chromium 发送新的 WebSocket 握手?

android - "Can' t 创建到服务器的可靠连接“使用 google plus 登录时出错

python - 使用 Python Twisted 和 Autobahn 从 Matlab 通过 WebSocket 发送 JSON 数据

php - 在 Apache 服务器上使用 WebSocket

go - 使用包 "golang.org/x/oauth2"通过 oauth2 进行身份验证

php - Google Analytics 核心报告 API,包含适用于 PHP 的电子邮件和密码

java - 我可以使用 RMI 从服务器调用客户端方法吗

node.js - 如果不是本地主机,则无法让浏览器连接到nodejs WS服务器