如何在高速公路客户端工具中添加基本身份验证标头
Posted
技术标签:
【中文标题】如何在高速公路客户端工具中添加基本身份验证标头【英文标题】:How to add basic auth header in autobahn client tool 【发布时间】:2013-04-17 18:15:55 【问题描述】:我想在高速公路客户端工具中添加基本的身份验证标头。我怎样才能做到这一点?
当前请求
GET / HTTP/1.1
User-Agent: AutobahnPython/0.5.2
Host: 10.35.34.172:9000
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Key: 1U4OeBs60qkmk1V/8voLOw==
Sec-WebSocket-Version: 8
我需要的请求:
GET / HTTP/1.1
User-Agent: AutobahnPython/0.5.2
Host: 10.35.34.172:9000
Authorization: Basic TXlMb2NhdGlvbkFwcDpNeUxvY2F0aW9uQXBwMTIz
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Key: 1U4OeBs60qkmk1V/8voLOw==
Sec-WebSocket-Version: 8
注意:我不希望高速公路服务器对客户端进行身份验证。 我的场景是高速公路客户端 --> 我的服务器 --> 高速公路服务器。 我的服务器将负责提取授权标头,然后调用高速公路服务器。
【问题讨论】:
【参考方案1】:我已经实现了为 AutobahnPython 客户端和服务器发送自定义 HTTP 标头的选项。您需要使用 GitHub 上最新的 AutobahnPython(master 分支)。
客户端可以通过在构造WebSocketClientFactory
期间提供headers
关键字参数来发送标头,或者通过setSessionParameters
设置标头。
服务器可以发送类似于客户端的头部,并且在从onConnect
返回时额外指定头部。
这是完整的example。
免责声明:我是 Autobahn 的原作者,为 Tavendo 工作。
【讨论】:
感谢 Oberstet。我已经用 master 分支更新了我的代码。在您的客户端代码autobahn.ws/python/tutorials/echo (client.py) 中,我已将标头添加为 factory = WebSocketClientFactory("ws://192.168.2.138:8081", debug = True, headers = "Authorization: Basic cmljazpyaWNrMTIz") 但是我收到错误,因为 factory = WebSocketClientFactory("ws://192.168.2.138:8081", debug = True, headers = "Authorization: Basic cmljazpyaWNrMTIz") TypeError: __init__() got an unexpected keyword argument 'headers' Am我做错了什么? 请再次从 GitHub 获取最新代码,不要忘记python setup.py install
。我还添加了一个完整的示例:github.com/tavendo/AutobahnPython/tree/master/examples/…
你有来自 html 的高速公路 JS 客户端示例吗?
@RafaelFreitas for autobahn-js 您可以在使用 headers
选项初始化新连接时传递自定义标头。例如:new Autobahn.Connection( headers: ... , ...options, );
以上是关于如何在高速公路客户端工具中添加基本身份验证标头的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 请求未经客户端身份验证方案“基本”授权。从服务器收到的身份验证标头为“基本领域 =”
HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“基本领域”
HTTP 请求未经客户端身份验证方案“基本”授权。从服务器收到的身份验证标头是“协商,NTLM”
IBM Worklight 6.0 - 如果客户端注销/登录,具有基本身份验证的适配器不会更新身份验证标头