[portland] Any suggestions for a RPC protocol for Python, et al.
timothy.selivanow at virtualxistenz.com
Wed Jul 2 23:04:19 CEST 2008
I've been wracking my brain (and Google's) on a RPC protocol that is
usable in at least Python, Java, and C++ that also should include things
like payload signing (maybe encryption too), and a strong and flexible
user authentication mechanism. This protocol would be used not only for
inter-machine communication, but intra-machine also (between various
processes that may be written in different languages, so something like
POJOs are probably out).
My first reaction is to use SOAP, but it seems like SOAP libraries
aren't as mature in Python as they are in C++ and Java. ZSI and Twisted
seem like they are the two front runners for SOAP in Python, but I
haven't found anything that easily satisfies the above. For instance, I
could use SOAP over HTTPS and provide message integrity easily, but
nothing supports it out-of-the-box. It seems like that is the same way
for authentication too, I could use HTTP based authentication but I
haven't found anything that support that too out-of-the-box.
As far as authentication goes, I've looked at using X.509 (HTTPS client
auth), Kerberos, LDAP (not preferable to me, but someone else may like
it). Any strong, central authentication mechanism, that would also
enable me to perform a crypto function (sign a payload, at least) using
the same token (or a resource derived from) as authentication is what
I'm looking at. WS-Security sounds like it would be useful, but nothing
Python-side supports that it seems (not too sure if I could extract the
payload *and* it's signature though, I've never used it).
I'm not tied to using SOAP, I've also looked into XML-RPC, CORBA, and
JSON-RPC, I prefer to not have to write a ton of code for Python
implementations that are missing a bunch of the "standard" pieces (e.g.
WS-Security, SOAP over HTTPS, plug-able authentication).
So, any suggestions? I'm loath to re-write the wheel, but I really like
Python and want to use it :)
More information about the Portland