DE:OAuth

From OpenStreetMap Wiki
Jump to navigation Jump to search
Oauth logo.svg

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.

Hauptserver Dev-Server
Token-Anfrage https://www.openstreetmap.org/oauth/request_token https://master.apis.dev.openstreetmap.org/oauth/request_token
Token-Zugriff https://www.openstreetmap.org/oauth/access_token https://master.apis.dev.openstreetmap.org/oauth/access_token
Autorisierung https://www.openstreetmap.org/oauth/authorize https://master.apis.dev.openstreetmap.org/oauth/authorize


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:

  1. Melden Sie sich an.
  2. Gehen Sie auf die Seite https://www.openstreetmap.org/user/<username>/oauth_clients/new (dabei username durch den Benutzernamen ersetzen).
  3. 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

  1. Anwendung wird von Ihnen als solche registriert.
  2. Sie legen CONSUMER_KEY und CONSUMER_SECRET in Ihrer Anwendung ab.
  3. Ein Benutzer führt Ihre Anwendung aus, die die Token-Zugriffsseite aufruft (s. Links) und oauth_token und oauth_token_secret erhält.
  4. Dann wird der Benutzer zur URL der Authorisierungsseite geleitet (URL hat die Form URL_Authorisierungsseite + '?oauth_token=' + oauth_token).
  5. 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).
  6. 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
  7. Die Anwendung erhält den gleichen oauth_token, ruft die Adresse für den Token-Zugriff auf und erhält access_token + access_token_secret
  8. Access-Token und das Secret (Passwort) können für die weitere Kommunikation genutzt werden.

externe Links