[Talk-de] Neu fuer OSM-Tool-Entwickler: OAuth
Frederik Ramm
frederik at remote.org
So Jun 28 23:32:54 UTC 2009
Hallo,
es gibt ein sehr vielversprechendes neues Feature (derzeit noch im
Test unter oauth.dev.openstreetmap.org, aber vermutlich schon bald auf
dem Produktionsserver): OAuth.
Mit OAuth kann eine nicht auf dem OSM-Server laufende (meist
Web-)Applikation eine Benutzer-Identifikation ueber OSM durchfuehren
und, das ist das besonders spannende, im Namen eines Users Operationen
auf der API durchfuehren. Der User muss dabei der Applikation sein
Passwort nicht verraten.
Simpel gesprochen, funktioniert das so. Angenommen, ich bin der Autor
von keepright.at und moechte bei einigen der Bugs, die ich anzeige,
einen Button anbieten: "automatisch reparieren". Ich registriere meine
Applikation einmalig von Hand bei OSM und gebe an, dass meine
Applikation gern im Namen von Benutzern Aenderungen an der Datenbank
vornehmen will. Wenn der Benutzer nun auf "automatisch aendern" klickt,
dann wird er von mir per Redirect zu osm.org geschickt. Dort muss er
sich einloggen und wird dann gefragt: "Moechtest Du, Zaphod Beeblebrox,
der Applikation keepright.at erlauben, in Deinem Namen Aenderungen
vorzunehmen?". Der Benutzer sagt ja und wird zurueck zu keepright.at
geschickt (dabei wird an keepright.at ein spezielles Token
uebermittelt). Nun kann keepright.at bei osm.org ein Changeset aufmachen
und Aenderungen durchfuehren, ohne dazu einen Benutzernamen und ein
Password angeben zu muessen - das spezielle Token reicht.
Dadurch koennen Web-Anwendungen kuenftig wesentlich besser direkt mit
OSM interagieren. Auch fuer Projekte wie "freietonne", die ja, wenn ich
das richtig verstehe, einen eigenen Editor benutzen, besteht nun die
Moeglichkeit, dass ein Benutzer ueber die freietonne-Webseite direkt bei
OSM Aenderungen durchfuehrt, und so weiter.
Anwendungen koennen nicht nur im Namen von Benutzern in die
OSM-Datenbank schreiben, sondern auch die bei OSM hinterlegten
Benutzereinstellungen laden oder aendern, oder private GPS-Tracks des
Benutzers auslesen.
Der Benutzer kann der Anwendung diese Rechte alle einzeln geben oder, zu
einem spaeteren Zeitpunkt, auch wieder wegnehmen.
Bislang war so etwas nur moeglich, indem der Benuzter der Anwendung sein
Password verraten hat, und das war von OSM nicht gern gesehen und
erforderte ein hohes Mass an Vertrauen des Benutzers gegenueber dem
Betreiber der Anwendung - wenn ich einer Anwendung mein Password
verrate, kann sie *alles* machen, inklusive das Password aendern oder
Spamnachrichten verschicken. Mit OAuth kann ich einer Anwendung nur ganz
bestimmte Rechte geben und sie auch jederzeit wieder wegnehmen.
(OAuth ist nicht auf Web-Anwendungen beschraenkt; man koennte z.B. auch
in JOSM OAuth einbauen, dann wuerde man in der JOSM-Preferences-Datei
nicht mehr Username/Password, sondern nur noch ein Token stehen haben.
Fuer Standalone-Anwendungen ist OAuth allerdings nicht so bedeutsam,
weil im allgemeinen ein in einer Preferences-Datei auf dem eigenen
Rechner liegendes Password nicht so ein grosses Sicherheitsproblem ist
wie eines, das man einem fremden Web-Service zum Speichern anvertraut.)
Ich will dieser Tage mal eine Demo-Implementierung eines OAuth-Clients
machen, denn es fehlt noch an brauchbarer Demo-Software bzw. ueberhaupt
an Dokumentation - derzeit muss man sich den Rails-Source
(rails-port-branches/oauth) aus dem SVN ziehen, um zu verstehen, was da
passiert.
Bye
Frederik
--
Frederik Ramm ## eMail frederik at remote.org ## N49°00'09" E008°23'33"
Mehr Informationen über die Mailingliste Talk-de