[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