How to add basic auth header in autobahn client tool
Asked Answered
L

1

6

I want to add basic auth header in the autobahn client tool. How can I achieve that?

Current request

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  

Request I need:

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  

Note: I don't want autobahn server to authenticate the client.
My scenario is autobahn client --> my server --> autobahn server.
My server will take care of extracting the authorization header and then invoke the autobahn server.

Lydie answered 24/4, 2013 at 9:6 Comment(0)
E
7

I have implemented options to send custom HTTP headers for both AutobahnPython client and server. You need to use the latest AutobahnPython on GitHub (master branch).

A client can send headers by providing a headers keyword argument during construction of the WebSocketClientFactory or set headers via setSessionParameters.

A server can send headers similar to client, and additionally specify headers when returning from onConnect.

Here is a complete example.

Disclaimer: I am original author of Autobahn and work for Tavendo.

Eradicate answered 24/4, 2013 at 12:56 Comment(4)
Thanks Oberstet. I have updated my code with master branch. In your client code autobahn.ws/python/tutorials/echo (client.py), I have added header as factory = WebSocketClientFactory("ws://192.168.2.138:8081", debug = True, headers = {"Authorization: Basic cmljazpyaWNrMTIz"}) But I am getting error as factory = WebSocketClientFactory("ws://192.168.2.138:8081", debug = True, headers = {"Authorization: Basic cmljazpyaWNrMTIz"}) TypeError: __init__() got an unexpected keyword argument 'headers' Am I doing something wrong?Lydie
Please do fetch again the latest code from GitHub, and don't forget to python setup.py install. I have also added a complete example: github.com/tavendo/AutobahnPython/tree/master/examples/…Eradicate
Do you have an example with autobahn JS client from HTML?Showalter
@RafaelFreitas for autobahn-js you can pass custom headers when initializing a new connection using the headers option. ex: new Autobahn.Connection({ headers: { ... }, ...options, });Meagher

© 2022 - 2024 — McMap. All rights reserved.