[Kimchi-devel] [PATCH 4/4] set the password for spice and VNC page.

wenwang wenwang at linux.vnet.ibm.com
Mon May 26 08:43:43 UTC 2014


 From my personal perspective, I don't think changing password that 
often is that good a solution.

Security is definitely our first priority for Kimchi whereas playing 
with the password might not seem to be that professional. Our intention 
is to make Kimchi a robust and secured tool for managing the VMs, due to 
which, I have a thought might be of some help to this issue:

Since we want to prevent the connection from users who are not the maker 
of certain VMs, Why not set a tag that indicate which user is authorized 
to use certain VMs? It functions like this:

1) If the authentication by tags failed, we can disable any action from 
that user.
2) VNC password is required and can be set either by Kimchi password or 
user himself/herself, once set, users can use the SSO method to connect 
VM using Kimchi and VNC has a password that user know.
3) For the issue of other users may connect to VMs by copying the url, I 
think we can set a token that expire once logged in. Without the token, 
User need to log in Kimchi again for safety concern.

Best Regards

Wang Wen


On 05/20/2014 11:27 PM, shaohef at linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>
> get the password from cookie and pass them in url to spice and VNC page.
> For spice we need to get the password from this url and pass it to
> websocket connection.
>
> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
> ---
>   ui/pages/spice.html.tmpl         | 3 ++-
>   ui/pages/websockify/console.html | 5 +++++
>   2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/ui/pages/spice.html.tmpl b/ui/pages/spice.html.tmpl
> index 213d216..c2bdffe 100644
> --- a/ui/pages/spice.html.tmpl
> +++ b/ui/pages/spice.html.tmpl
> @@ -64,6 +64,7 @@
>               host = getParameter("listen");
>               port = getParameter("port");
>               token = getParameter("token");
> +            password = getParameter("password")
>               document.getElementById("host").value = host;
>               document.getElementById("port").value = port;
>               if ((!host) || (!port)) {
> @@ -82,7 +83,7 @@
>                       screen_id : "spice-screen",
>                       dump_id : "debug-div",
>                       message_id : "message-div",
> -                    password : "",
> +                    password : password,
>                       onerror : spice_error
>                   });
>               } catch (e) {
> diff --git a/ui/pages/websockify/console.html b/ui/pages/websockify/console.html
> index a536e38..7706074 100644
> --- a/ui/pages/websockify/console.html
> +++ b/ui/pages/websockify/console.html
> @@ -16,6 +16,11 @@
>           var url = "https://" + location.hostname + ":" + kimchi_port + "/";
>           url += path + query
>
> +        var cookieRe = new RegExp(';?\\\s*(ticketVM)=(\s*[^;]*);?', 'g');
> +        var match = cookieRe.exec(document.cookie);
> +        var ticket = match ? decodeURIComponent(match[2]) : undefined;
> +        url += ticket ? "&password=" + ticket : '';
> +
>           window.location.replace(url)
>         }
>       </script>




More information about the Kimchi-devel mailing list