1
我設法配置諾克斯一個WebSocket的服務,用於測試目的是ws://echo.websocket.org
如何在Apache中諾克斯配置的WebSocket服務與基本身份驗證
這裏是我的配置文件:
service.xml中
<service role="ECHOWS" name="echows" version="0.0.1">
<policies>
<policy role="webappsec"/>
<policy role="authentication" name="Anonymous"/>
<policy role="rewrite"/>
<policy role="authorization"/>
</policies>
<routes>
<route path="/echows">
<rewrite apply="ECHOWS/echows/inbound" to="request.url"/>
</route>
</routes>
</service>
rewrite.xml
<rules>
<rule dir="IN" name="ECHOWS/echows/inbound" pattern="*://*:*/**/echows">
<rewrite template="{$serviceUrl[ECHOWS]}"/>
</rule>
</rules>
{}拓撲的.xml部分:
我可以連接到它:
wscat -c wss://my-knox-server/gateway/default/echows
connected (press CTRL+C to quit)
> Hello Knox!
< Hello Knox!
但我想諾克斯接受連接,只有當適當的憑證給出:
wscat --auth <username:password> -c wss://my-knox-server/gateway/default/echows
用於http服務的My Knox配置適用於我必須把證書,否則我得到401:
curl -i https://my-knox-server/gateway/default/my_service/ping
HTTP/1.1 401 Unauthorized
curl -i -u '<user>:<password>' https://my-knox-server/gateway/default/my_service/ping
HTTP/1.1 200 OK
我想用websockets實現相同的結果。
[編輯]
而且我不完全理解我的WebSocket服務上面service.xml中配置,因爲它比一個http服務,我能夠用最簡單的可能配置不同:
<service role="MY_APP" name="my_app" version="0.0.1">
<routes>
<route path="/my_app/**"/>
</routes>
</service>
- 爲什麼在WebSocket的服務,我需要
policies
,以及它們意味着什麼的情況? - 爲什麼
<routes>/<route>
有一個元素<rewrite>
和它的語義是什麼?它是否與<rule>/<rewrite>
對應rewrite.xml?request.url
是什麼意思?
爲什麼在websocket連接的情況下不能使用http servlet過濾器?他們通過http請求進行初始化,對吧? – tomek
那麼,一旦檢測到ws協議,Knox使用websocket處理程序(由jetty使用)繞過servlet過濾器。 –
謝謝@Sandeep更多,我還增加了一些問題,你可以看看他們嗎? – tomek