OAuth – die sichere API-Autorisierung
Posted on June 27th, 2014 in Android | von Bernd S. | 1 Comment »
Als ich mein HTC-Hero konfiguriert und danach einige Applikationen installiert und konfiguriert habe, ist mir aufgefallen, dass es mehrere Möglichkeiten gibt, wie die Autorisierung einer Anwendung mit einer Webapplikation ablaufen kann.
Die klassische Möglichkeit ist die Autorisierung mittels Username und Passwort. Bei der zweiten Möglichkeit wird man von der Applikation an einen Webbrowser weitergeleitet und muss sich im Browser bei der Webapplikation anmelden. Weiters erteilt man nun die Erlaubnis, dass die gerade verwendete Applikation auf die Webapplikation zugreifen darf. Manchmal kann man hier noch zusätzliche Berechtigungen vergeben bzw. entfernen.
Für diesen Autorisierungszugriff gibt es auch einen Standard, welcher sich OAuth nennt. Auch Facebook verwendet hier eine ähnliche Schnittstelle um Applikationen einen Zugriff mit bestimmten Berechtigungen erlaubt. Soweit ich das aber sagen kann, verwendet Facebook hier ein eigenes Protokoll/API für die Autorisierung (Facebook Connect)?! Wer hier mehr weiß, kann dies gerne in die Kommentare schreiben
Diese Art in einer Desktop- oder mobilen Applikation auf eine Webapplikation zuzugreifen bietet viele Vorteile, welche dem Nachteil, nämlich den etwas komplizierteren ersten Anmeldevorgang, leicht vergessen läßt. Gibt man seinen Usernamen und Passwort für ein Service aus der Hand, so verliert man die Kontrolle darüber. Wenn jemand auf diese Daten Zugriff erhält und missbräuchlich verwendet, so hilft oft auch ein Passwortwechsel nichts. Ändern man nämlich sein Passwort und ein anderer versucht sich noch mit dem alten und mittlerweile falschen Passwort anzumelden, so kann es leicht passieren, dass der Account aufgrund zu vieler fehlgeschlagenen Anmeldeversuche gesperrt wird.
Dies kann natürlich nicht passieren, wenn man seinen Usernamen und sein Passwort nicht aus der Hand gibt und mittels OAuth nur die Berechtigung erteilt, dass eine andere Anwendung auf die eigenen Daten/Services zugreifen darf. Wird jetzt z.B: ein Telefon mit einem Twitter-Client gestohlen, so kann man nun jederzeit über das Webinterface von Twitter die Berechtigung für diesen Client entziehen und das Twittern über das Telefon mit seinen eigenen Account ist nicht mehr möglich.
Hier ein paar Beispiele von Services und Applikationen, welche diese Art von Schnittstellen nutzen:
- RememberTheMilk – Online ToDo-Manager
- Google Kalender/Kontakte/Tasks
- Scheduleworld – Online Kontakt/Kalendar/Email-Verwaltung und bietet auch die Möglichkeit sein Handy via SyncML zu synchronisieren
- Goosync – SyncML Synchronisation zwischen Google Kontakte/Kalender/Tasks und Handys
- Ubuntu One
- Ubuntu One Client
- Qype
- Qype Radar – Qype Client für das Android-Telefon
Zur Zeit bietet status.net (früher laconi.ca) und damit auch identi.ca noch keine Unterstützung für OAuth. Aber im Ticketsystem von status.net gibt es bereits ein Ticket für diesen Feature Request und soll für die Version 0.9 von status.net geplant sein.
Ebenfalls unterstützt der Microblogging Client Gwibber selbst in der neuesten Version 2.0 noch kein OAuth für Twitter. Aber auch hier gibt es schon einen Bugreport, welcher sich mit diesen Thema beschäftigt.
Leider verwendet HTC in seiner selbst geschriebenen Oberfläche Sense UI für die Verbindung mit Twitter, Facebook und Flickr auch nur die Username/Passwort-Methode. Ist wohl mehr als fraglich, ob hier HTC nachbessert und die Sicherheit für das Telefon mit einer anderen Autorisierungsmethode erhöht.
Wer kennt von euch Webapplikationen welche für die Autorisierung OAuth anbieten bzw. wer kennt Desktop- oder mobile Applikationen, welche OAuth für die Anmeldung unterstützen?
Update am 3.11.2009:
Bei heise.de gibt es einen detailierten Artikel zum Thema Autorisierungsdienste mit OAuth
One Response
Helpful story, bookmarked the site in hopes to see more information!