All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Ewan Mellor <ewan@xensource.com>
Cc: Ian Pratt <m+Ian.Pratt@cl.cam.ac.uk>,
	xen-devel <xen-devel@lists.xensource.com>
Subject: Re: [RFC][PATCH] Secure XML-RPC for Xend
Date: Wed, 14 Jun 2006 12:34:26 -0500	[thread overview]
Message-ID: <449048A2.80409@us.ibm.com> (raw)
In-Reply-To: <20060614084348.GF5840@leeni.uk.xensource.com>

Ewan Mellor wrote:
> On Fri, Jun 09, 2006 at 07:10:23AM -0500, Anthony Liguori wrote:
>   
>> It's tempting to use https/basic auth since it seems like it ought to 
>> just work with existing clients.  However, that doesn't appear to be the 
>> case.
>>
>> Python doesn't seem to provide any real support for authentication 
>> out-of-the-box.  It wouldn't be that hard to add but neither was an SSH 
>> transport.
>>     
>
> Personally, I'd use SSL to secure the connection and authenticate the server
> to the client, but I'd not use HTTP's basic auth -- I'd add a "login" message
> that checked the username/password using PAM, in other words, have the
> authentication of the user handled at Xend's level, rather than relying on the
> transport/session layer to do it.  Like you say, HTTP's authentication stuff
> doesn't seem to be well supported.
>   

I see three ways of making this work.

1) Have a login message that returns some sort of random key.  This key 
would have to be passed to all other RPCs.  The key would have to come 
from a good random source and be sufficiently large that a brute-force 
attack wasn't likely.  We would have to introduce some sort of way to 
expire these keys though (to prevent a user from reusing a key from a 
previous authentication after the root user password has changed).

2) Pass the credentials to every RPC (this is essentially what HTTP 
Basic auth does).  The good thing about this is that it solves the above 
key expiration problem but PAM authentication can be pretty heavy weight 
depending on how your PAM is configured.  This could prove rather nasty.

3) Make sure the client uses Keep-Alive and have the login RPC 
authentication the rest of the session.  I like this approach the most 
since it avoids the problems with both of the above.  Of course, it 
assumes your client library is capable of doing XML-RPC over a 
Keep-Alive session which probably isn't a good assumption.

What do you think?  Is there another way of doing this that I'm missing?

The plus side of using the login RPC is that with stunnel it will be 
pretty easy to implement on the server end.

>> The other problem is that Python doesn't provide support for certificate 
>> verification.  That's okay if you're just using Python to screen scrap 
>> but if you're in an enterprise environment it's not a very good thing.
>>
>> The other problem I'm concerned about is certificate management on our 
>> end.  The average user is going have to end up using snake oil certs and 
>> I've always found configuring these things to be a real pain.
>>     
>
> It's only not a pain with SSH because your distro has set it up for you to
> generate a key at install time.  Hopefully, we could arrange or rely upon the
> distros to arrange a similar thing for Xend.
>   

It's worse because SSL assumes that there is a single root-of-trust 
(namely Verisign).  Properly signed certs are expensive.  Managing snake 
oils certs becomes a PITA.

I still think HTTPS is worth doing because it will be useful to an awful 
lot of clients.

Regards,

Anthony Liguori

> Ewan.
>   

  reply	other threads:[~2006-06-14 17:34 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-09  8:10 [RFC][PATCH] Secure XML-RPC for Xend Ian Pratt
2006-06-09 12:10 ` Anthony Liguori
2006-06-14  8:43   ` Ewan Mellor
2006-06-14 17:34     ` Anthony Liguori [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-06-09  2:13 Anthony Liguori
2006-06-09  2:45 ` Matthew Palmer
2006-06-09  8:34 ` Anil Madhavapeddy
2006-06-09  8:41   ` Daniel Veillard
2006-06-09  8:54     ` Anil Madhavapeddy
2006-06-09 14:57       ` Anthony Liguori
2006-06-09 12:00   ` Anthony Liguori
2006-06-14  8:36 ` Ewan Mellor
2006-06-14 17:26   ` Anthony Liguori
2006-06-14 17:36     ` Ewan Mellor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=449048A2.80409@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=ewan@xensource.com \
    --cc=m+Ian.Pratt@cl.cam.ac.uk \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.