[python-users] twisted xmlrpc/jsonrpc authentifizierung und Session-Verwaltung

Thomas Renard Thomas.Renard at koeln.de
Sa Dez 19 16:47:50 CET 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Christopher,

> 
> Für mich sieht es so aus, als liegt dein Problem eher auf der
> Clientseite. Wie dein JS-Client mit dem Server kommuniziert, kann dir
> doch eigentlich egal sein, der JS-Handler deines Loginformulars kann
> doch den eingegebenen Benutzernamen und das Passwort per HTTP-Auth
> weiterreichen. Dazu brauch man nur einen entspr. Header im
> XmlHttpRequest setzen.
> 

Ich hab mir das mal angeschaut, Cookies werden gesetzt. Das ist also
erstmal kein Problem.

> Wenn du allerdings eine Session-Cookie-Authentifizierung haben willst,

genau das.

> müssen Server und JC-Client das unterstützen. Welche JC-Clientlibrary
> verwendest du denn? Warum meinst du, dass dein Clientside-Code dafür zu
> blöd ist?
>

Als Clientlibrary verwende ich pyjamas (http://pyjs.org), die API hat
aber auch ein setCookie, das ist also erledigt.

> Ich habe übrigens gerade vor zwei Wochen mir eine Erweiterung des
> SimpleXMLRRPCServers aus der Standardbibliothek gebaut, die SSL und HTTP
> Basic Auth unterstützt. Es wäre sicher nicht so schwierig, dieses Modul
> auch noch um Session-Cokkie-Authentifzierung zu erweitern. Der Server
> ist allerdings XmlRPC only. Ob es dafür JS-Clients gibt, weiß ich nicht.
> 

SimpleXMLRPCServer (und das Äquivalent SimpleJSONRPCServer -sic! das
gibts) sind leider nicht das Einzige, was ich benötige. Ich brauche
einen Sceduled Job, der mir meine Datenbank im 5-Minutentakt
aktualisiert und auch noch einen static Webserver, der mein statisches
JS-Environment in den Browser pumpt. Das geht soweit bei Twisted alles
out of the box. HTTP-Authentifizierung geht auch out of the box. Das ist
aber auch das Problem: Die dazu verwendeten Library-Parts sind natürlich
so tief im Bauch von Twisted, daß man das erstmal begreifen muß, wie es
geht.

Es muß dann nämlich ein Wrapper um den HTTP-Zugriff herum gebaut werden,
um außerhalb der Library-Funktionalität die nötigen Daten aus dem
HTTP-Header rauszuholen (bei HTTP-Auth halt den Basic-User/Pass-Kram und
in meinem Fall der Session-Cookie) und dann die nötige (Anonym-, User-,
Admin-) Instanz der jeweiligen JsonRPC-Klasse auszuspucken, die dann das
eigentliche JsonRPC-Rendering macht.

Das ist höllisch komplex aufzubauen, aber, wenn es läuft, wesentlich
schicker.

Klar, man kann die Einzelteile alle gesondert in einen Apache stecken,
aber mir schwebt ein Tool vor, daß bei jedem out-of-the-box anspringt,
sozusagen: `python setup.py install; runtheapp` (und dann evtl durch nen
Apache-Proxy), und da ist ein wenig Aufwand notwendig.

Nix desto trotz, wenn jemand sehen möchte, wie sich Entwickler einen
abbricht, hier der aktuelle Code (mit nem kleinen Aha-Effekt, was ich
eigentlich machen möchte): http://bitbucket.org/cy8aer/cybrss/wiki/Home
Mein aktuelles Problem ist irgendwo in
packages/cybrss.server/cybrss/server zu finden (realm.py ist ne Skizze,
das ist aber nicht fertig).

Aktuell versuche ich, aus
http://blog.vrplumber.com/index.php?/archives/1640-Adding-user-authentication-to-your-Twisted-web-site-Another-HowTo-for-undocumented-features....html
schlau zu werden und da den Nevow-Kram raus und den jsonrpc-Kram
reinzubekommen.

Vielleicht ist das ja interessant, immerhin basierend auf Twisted,
SQLAlchemy und eben Pyjamas...

Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkss9aYACgkQhrhMPFWiJKovmQCeOh2yeE/7/XmBfUXK05OGPTrU
vlQAni0l2vCmWp4QJvIF6BT+1r9yUZnA
=HqdD
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste python-users