[Kimchi-devel] [PATCH 0/6] Enable Kimchi authentication in console pages
Aline Manera
alinefm at linux.vnet.ibm.com
Sun May 4 15:17:29 UTC 2014
On 05/04/2014 10:41 AM, Sheldon wrote:
> On 05/04/2014 03:21 PM, Zhou Zheng Sheng wrote:
>> This is a nice idea. I tested the vnc part. A problem in previous "[v3]
>> Enable encryption in vm VNC console connection" is that vnc_auto.html is
>> not protected by kimchi authentication, and this patch fixes the
>> problem. The reason why I did not implement authentication is that the
>> port 64667 for the VNC websocket traffic itself is not protected by
>> Kimchi authentication. Even with this patch series, one can just git
>> clone the noVNC official git repo, then open the following link in Opera
>> (or Chrome?).
>>
>>
>> file:///home/edward/src/noVNC/vnc_auto.html?port=64667&host=X.X.X.X&path=?token=NAME_OF_THE_VM&encrypt=1
>>
>> Then you get the guest VNC console without logging in to Kimchi. So this
>> patch does not improve anything compared to "[v3] Enable encryption in
>> vm VNC console connection", and it involves another redirection which
>> makes the process a bit more complicated.
>>
>> I think instead of protecting vnc_auto.html, which is purely static
>> content and not useful to protect, we should protect the VNC payload
>> with password. Kimchi should start the VM with a random VNC password,
>> when the user clicks the VNC link, it should links to
>>
>> https://server:64667/vnc_auto.html?password=XXX&port=XXX&token=XXX&encrypt=1&path=?
>>
>> Since the password is random generated, and the traffic encrypted on
>> HTTPs, it's actually secure.
>>
>> We can also improve the security by generating a new random password
>> every time the user opens a new VNC session.
> a ticket for VNC or spice session?
> Ticket is used to gain admission to access VNC or spice session.
> An expire time for ticket, when expire, ticket is not validated.
> Or one ticket is just for one time access.
> Only the user with VM operation permission can get the ticket.
>
> For UI, the VM connection action, first get the ticket and then connect
> the VNC or Spice.
Yeap, Sheldon! I think it will work.
It's very similiar to what I send in response to Zhou Zheng's email.
Just need to find an easy way to implement this.
>
>> on 2014/05/02 08:49, Aline Manera wrote:
>>> From: Aline Manera <alinefm at br.ibm.com>
>>>
>>> As I commented in mailing list ([v3] Enable encryption in vm VNC console connection)
>>> to enable Kimchi authentication in console pages those need to be provided by
>>> Kimchi server instead of websockify web server.
>>>
>>> I reverted the "Enable encryption in vm VNC console connection" commit, applied
>>> "[PATCH v2] Enable encryption in vm console connection" path send by Mark and
>>> make the changes needed to redirect user from websockify web server to Kimchi.
>>> So noVNC page continues to be rendered by Kimchi.
>>>
>>> With all that done, I was able to enable authentication to vnc_auto.html and
>>> spice.html
>>>
>>> Aline Manera (5):
>>> Revert "Enable encryption in vm VNC console connection"
>>> Make use of the mini Web server in the websockify
>>> Enable Kimchi authentication in console pages
>>> backend: Redirect 401 error to default page
>>> UI: Redirect user to console page after logging
>>>
>>> Mark Wu (1):
>>> Enable encryption in vm console connection
>>>
>>> configure.ac | 9 +-
>>> contrib/kimchi.spec.fedora.in | 14 +-
>>> contrib/kimchi.spec.suse.in | 14 +-
>>> src/kimchi/config.py.in | 32 +-
>>> src/kimchi/vnc.py | 2 +-
>>> src/nginx.conf.in | 15 +
>>> tests/test_config.py.in | 32 +-
>>> ui/Makefile.am | 2 +-
>>> ui/css/Makefile.am | 2 +-
>>> ui/css/fonts/Makefile.am | 2 +
>>> ui/css/fonts/novnc/Makefile.am | 20 +
>>> ui/css/fonts/novnc/Orbitron700.ttf | Bin 0 -> 38580 bytes
>>> ui/css/fonts/novnc/Orbitron700.woff | Bin 0 -> 17472 bytes
>>> ui/css/novnc/Makefile.am | 20 +
>>> ui/css/novnc/base.css | 405 ++++++
>>> ui/js/Makefile.am | 2 +-
>>> ui/js/novnc/Makefile.am | 22 +
>>> ui/js/novnc/base64.js | 115 ++
>>> ui/js/novnc/des.js | 273 ++++
>>> ui/js/novnc/display.js | 770 +++++++++++
>>> ui/js/novnc/input.js | 1946 +++++++++++++++++++++++++++
>>> ui/js/novnc/jsunzip.js | 676 ++++++++++
>>> ui/js/novnc/main.js | 103 ++
>>> ui/js/novnc/rfb.js | 1866 +++++++++++++++++++++++++
>>> ui/js/novnc/util.js | 381 ++++++
>>> ui/js/novnc/web-socket-js/Makefile.am | 24 +
>>> ui/js/novnc/web-socket-js/README.txt | 109 ++
>>> ui/js/novnc/web-socket-js/WebSocketMain.swf | Bin 0 -> 177114 bytes
>>> ui/js/novnc/web-socket-js/swfobject.js | 4 +
>>> ui/js/novnc/web-socket-js/web_socket.js | 391 ++++++
>>> ui/js/novnc/websock.js | 422 ++++++
>>> ui/js/novnc/webutil.js | 216 +++
>>> ui/js/src/kimchi.api.js | 7 +-
>>> ui/js/src/kimchi.login_window.js | 24 +-
>>> ui/novnc/Makefile.am | 22 -
>>> ui/novnc/css/Makefile.am | 20 -
>>> ui/novnc/css/Orbitron700.ttf | Bin 38580 -> 0 bytes
>>> ui/novnc/css/Orbitron700.woff | Bin 17472 -> 0 bytes
>>> ui/novnc/css/base.css | 405 ------
>>> ui/novnc/js/Makefile.am | 22 -
>>> ui/novnc/js/base64.js | 115 --
>>> ui/novnc/js/des.js | 273 ----
>>> ui/novnc/js/display.js | 770 -----------
>>> ui/novnc/js/input.js | 1946 ---------------------------
>>> ui/novnc/js/jsunzip.js | 676 ----------
>>> ui/novnc/js/main.js | 103 --
>>> ui/novnc/js/rfb.js | 1866 -------------------------
>>> ui/novnc/js/util.js | 381 ------
>>> ui/novnc/js/web-socket-js/Makefile.am | 24 -
>>> ui/novnc/js/web-socket-js/README.txt | 109 --
>>> ui/novnc/js/web-socket-js/WebSocketMain.swf | Bin 177114 -> 0 bytes
>>> ui/novnc/js/web-socket-js/swfobject.js | 4 -
>>> ui/novnc/js/web-socket-js/web_socket.js | 391 ------
>>> ui/novnc/js/websock.js | 422 ------
>>> ui/novnc/js/webutil.js | 216 ---
>>> ui/novnc/vnc.html | 43 -
>>> ui/pages/Makefile.am | 2 +-
>>> ui/pages/novnc/Makefile.am | 20 +
>>> ui/pages/novnc/vnc_auto.html | 22 +
>>> ui/pages/vnc_auto.html.tmpl | 44 +
>>> 60 files changed, 7955 insertions(+), 7861 deletions(-)
>>> create mode 100644 ui/css/fonts/novnc/Makefile.am
>>> create mode 100644 ui/css/fonts/novnc/Orbitron700.ttf
>>> create mode 100644 ui/css/fonts/novnc/Orbitron700.woff
>>> create mode 100644 ui/css/novnc/Makefile.am
>>> create mode 100644 ui/css/novnc/base.css
>>> create mode 100644 ui/js/novnc/Makefile.am
>>> create mode 100644 ui/js/novnc/base64.js
>>> create mode 100644 ui/js/novnc/des.js
>>> create mode 100644 ui/js/novnc/display.js
>>> create mode 100644 ui/js/novnc/input.js
>>> create mode 100755 ui/js/novnc/jsunzip.js
>>> create mode 100644 ui/js/novnc/main.js
>>> create mode 100644 ui/js/novnc/rfb.js
>>> create mode 100644 ui/js/novnc/util.js
>>> create mode 100644 ui/js/novnc/web-socket-js/Makefile.am
>>> create mode 100644 ui/js/novnc/web-socket-js/README.txt
>>> create mode 100644 ui/js/novnc/web-socket-js/WebSocketMain.swf
>>> create mode 100644 ui/js/novnc/web-socket-js/swfobject.js
>>> create mode 100644 ui/js/novnc/web-socket-js/web_socket.js
>>> create mode 100644 ui/js/novnc/websock.js
>>> create mode 100644 ui/js/novnc/webutil.js
>>> delete mode 100644 ui/novnc/Makefile.am
>>> delete mode 100644 ui/novnc/css/Makefile.am
>>> delete mode 100644 ui/novnc/css/Orbitron700.ttf
>>> delete mode 100644 ui/novnc/css/Orbitron700.woff
>>> delete mode 100644 ui/novnc/css/base.css
>>> delete mode 100644 ui/novnc/js/Makefile.am
>>> delete mode 100644 ui/novnc/js/base64.js
>>> delete mode 100644 ui/novnc/js/des.js
>>> delete mode 100644 ui/novnc/js/display.js
>>> delete mode 100644 ui/novnc/js/input.js
>>> delete mode 100755 ui/novnc/js/jsunzip.js
>>> delete mode 100644 ui/novnc/js/main.js
>>> delete mode 100644 ui/novnc/js/rfb.js
>>> delete mode 100644 ui/novnc/js/util.js
>>> delete mode 100644 ui/novnc/js/web-socket-js/Makefile.am
>>> delete mode 100644 ui/novnc/js/web-socket-js/README.txt
>>> delete mode 100644 ui/novnc/js/web-socket-js/WebSocketMain.swf
>>> delete mode 100644 ui/novnc/js/web-socket-js/swfobject.js
>>> delete mode 100644 ui/novnc/js/web-socket-js/web_socket.js
>>> delete mode 100644 ui/novnc/js/websock.js
>>> delete mode 100644 ui/novnc/js/webutil.js
>>> delete mode 100644 ui/novnc/vnc.html
>>> create mode 100644 ui/pages/novnc/Makefile.am
>>> create mode 100644 ui/pages/novnc/vnc_auto.html
>>> create mode 100644 ui/pages/vnc_auto.html.tmpl
>>>
>
More information about the Kimchi-devel
mailing list