DE:OAuth
OAuth ist ein Mechanismus, der es den Benutzern von OpenStreetMap erlaubt, Anwendungen Dritter zu autorisieren, Handlungen unter ihrem Benutzerkonto vorzunehmen, ohne diesen Anwendungen jedoch das OSM-Passwort zu geben. Dafür wird ein sogenannter Token erstellt. Die User Credentials Policy empfiehlt Entwicklern die Verwendung von OAuth (im Gegensatz zu HTTP Basic Auth und weiteren Methoden) für den Zugriff auf die API.
Wirkungsprinzip OAuth (Beispiel flickr)
OAuth wird auch von anderen Webseiten genutzt, z.B. Twitter und flickr.
Das Beispiel der flickr-App zeigt OAuth aus Anwendersicht: Wenn man die App benutzen möchte, wird der Benutzer auf die Webseite von flickr geleitet, wo die Benutzerdaten eingegeben werden müssen und im Anschluss die Berechtigungen für die App festgelegt werden. Die App erhält dann eine Berechtigung (Token (= Chip) genannt), die sie selbst benutzen kann, um Bilder hochzuladen. Daher muss die App nicht die Anmeldedaten des Benutzers kennen. Der Benutzer ist somit davor sicher, dass die App andere Dinge macht als die, für die er sie berechtigt hat.
Beispiel für OpenStreetMap: https://api.openstreetmap.org/api/0.6/user/details gibt die Daten des eigenen Benutzers aus. Falls man nicht angemeldet ist, wird man um die OSM-Zugangsdaten gebeten und die Authentifizierung verläuft im Browser über HTTP.
Entwickler
Unter OAuth examples finden sich Codebausteine und Links zu OAuth-Code in verschiedenen Sprachen. Dies sollte bei der Entwicklung helfen.
Technische Details:
- OpenStreetMap unterstützt die Versionen 1.0 und 1.0a.
- Version 1.0 ist nur noch für die Abwärtskompatibilität.
- Neue Anwendungen sollten Version 1.0a nutzen.
- Tokens haben derzeit kein Ablaufdatum (sollten folglich von der Anwendung gespeichert werden).
Relevante Links
Eine Anwendung kann in den eigenen Benutzereinstellungen unter OAuth settings
registriert werden.
Die Hauptdatenbank und der Dev-Server benutzen nicht die selbe Datenbank. Für die Benutzung des Dev-Servers sind separate Benutzerkonten notwendig. |
Registrierung einer Anwendung als OAuth consumer
Bevor eine Anwendung über das OAuth-Protokoll autorisierten Zugriff erhalten kann, muss sie als OAuth consumer registriert werden. Jeder Benutzer von OSM kann Anwendungen für OAuth registrieren:
- Melden Sie sich an.
- Gehen Sie auf die Seite
https://www.openstreetmap.org/user/<username>/oauth_clients/new
(dabeiusername
durch den Benutzernamen ersetzen). - Füllen Sie die folgenden vier Angaben aus:
- Name
- Name Ihrer Anwendung wie er den Benutzern angezeigt wird
- Main Application URL (Required)
- Dies ist die Adresse einer Seite mit Informationen zu Ihrer Anwendung. Diese Adresse wird dem Benutzer angezeigt, wenn er seine Benutzerdaten eingibt. Sie wird sonst nicht für OAuth genutzt.
- Callback URL
- Nach der Eingabe der Benutzerdaten wird der Benutzer von OSM an diese Adresse weitergeleitet. Falls die Anwendung nicht über eine solche Seite verfügt, kann dies leer gelassen werden.
- Support URL
- Keine Beschreibung verfügbar, in der Praxis wird das Feld leergelassen.
Authentifizierung nach dem Protokoll
- Anwendung wird von Ihnen als solche registriert.
- Sie legen
CONSUMER_KEY
undCONSUMER_SECRET
in Ihrer Anwendung ab. - Ein Benutzer führt Ihre Anwendung aus, die die Token-Zugriffsseite aufruft (s. Links) und
oauth_token
undoauth_token_secret
erhält. - Dann wird der Benutzer zur URL der Authorisierungsseite geleitet (URL hat die Form
URL_Authorisierungsseite + '?oauth_token=' + oauth_token
). - Der Benutzer loggt sich ein mit den Daten von osm.org und die Seite fragt ihn nach den Berechtigungen (Benutzer kann einzeln auswählen, sieht aber nur die, die von der App auch gebraucht werden).
- Wenn eine Callback-URL angegeben wurde, wird der Nutzer zu dieser Seite geleitet. Die URL hat folgende Form
Callback-URL + '?oauth_token=' + gleicher_oauth_token + '&oauth_verifier=' + verifier_um_access_token_zu_erhalten
- Die Anwendung erhält den gleichen
oauth_token
, ruft die Adresse für den Token-Zugriff auf und erhältaccess_token + access_token_secret
- Access-Token und das Secret (Passwort) können für die weitere Kommunikation genutzt werden.
externe Links
- Basics of the protocol (oauth_verifier not needed)
- http://oauth.net
- http://oauth.net/documentation
- OAuth auf Wikipedia
- http://stakeventures.com/articles/2008/02/23/developing-oauth-clients-in-ruby