Mit dem OAuth-Protokoll können sich Apps bei Diensten authentifizieren

  • Jack Paul
  • 0
  • 2210
  • 419

In einem kürzlich durchgeführten Projekt musste ich einen Dienst verwenden, der OAuth für die Authentifizierung verwendete. Ich hatte von OAuth gehört, aber ich hatte das relativ neue Protokoll nicht verwendet. Ich konnte meine Ziele erreichen, ohne direkt auf die OAuth-Spezifikation programmieren zu müssen, aber ich entschied mich, ein wenig tiefer zu graben, um mehr über die Eingeweide des Protokolls zu erfahren.

Ein Überblick über OAuth

OAuth ist so konzipiert, dass ein Benutzer einer Anwendung mit Daten eines Dienstes arbeiten kann, ohne der Anwendung Anmeldeinformationen für den Dienst bereitstellen zu müssen. Das große Konzept hinter OAuth ist, dass es Token verwendet, damit sich Anwendungen bei Diensten authentifizieren können. Wenn eine Anwendung mit einem Dienst arbeiten möchte, fordert sie ein Token vom Dienst an. Dieses Token ist anfangs unbrauchbar, dh es kann nicht zur Authentifizierung verwendet werden. Stattdessen fordert die Anwendung den Benutzer auf, zum Dienst zu wechseln (hinter den Kulissen werden Daten im Link weitergeleitet oder der Token wird umgeleitet). Wenn der Benutzer dort ankommt, meldet er sich mit seinen zuvor festgelegten Anmeldeinformationen an. Dadurch wird das Token, das die Anwendung erhalten hat, zu einem autorisierten Token, sodass es für die Authentifizierung verwendet werden kann. Dies wird als dreibeinige Authentifizierung bezeichnet, da drei Akteure beteiligt sind: die Anwendung, der Benutzer und der Dienst. Es gibt auch eine zweibeinige Authentifizierung zwischen einer Anwendung und dem Dienst, für die kein Benutzereingriff erforderlich ist.

Die Funktionsweise des Protokolls geht weit über das hinaus, was ich in dieser kurzen Einführung beschrieben habe. Weitere Informationen finden Sie auf der OAuth-Website und in den hervorragenden Artikeln über OAuth am hueniverse.

OAuth-Ressourcen und Codebeispiele

Anfangs wollte ich den gesamten Zugangscode selbst schreiben, aber ich habe erfahren, dass die RestSharp-Bibliothek OAuth unterstützt. Wenn Sie mit einem REST-ähnlichen Service arbeiten möchten, ist dies die beste Wahl. RestSharp ist eine hervorragende Bibliothek für die Arbeit mit REST-Diensten und erleichtert deren Bearbeitung.

Für das, woran ich arbeitete, konnte ich RestSharp aufgrund der beteiligten Klassenstrukturen nicht verwenden. Darüber hinaus hatte der Dienst, in den ich integriert war, bereits einige herausragende Beispielcodes, die nur geringfügige Änderungen erforderten, um meinen Anforderungen gerecht zu werden. Dieser Code verwendete die DevDefined OAuth-Bibliothek mit einigen Änderungen.

Wenn Sie den Beispielcode sehen möchten, der mir so hilfreich war, sowie ein gutes Video-Tutorial, das zeigt, wie die dreibeinige Authentifizierung in der Praxis funktioniert, finden Sie ihn in der Xero-Entwicklerdokumentation. Xero verfügt auch über Codebeispiele und Lernprogramme, die die Verwendung von OAuth in der Praxis veranschaulichen.

Zusammenfassung

OAuth kann komplex erscheinen, wenn man sich die Spezifikation und die Details ansieht, aber in Wirklichkeit ist es überhaupt nicht schlecht. Sie gibt den Diensten alle Möglichkeiten der Welt, um zu entscheiden, wie die Authentifizierung beim Endbenutzer erfolgen soll. Der große Vorteil der Verwendung von OAuth besteht darin, dass die konsumierende Anwendung die Anmeldeinformationen des Benutzers nicht kennen muss, wodurch ganze Klassen von Sicherheitsbedenken beseitigt werden.

Ich habe das Gefühl, dass OAuth in Zukunft immer beliebter wird, da immer mehr Dienste Nicht-SOAP-Schnittstellen anbieten. Ein Ort, an dem beispielsweise OAuth verwendet wird, ist der Windows Azure Marketplace DataMarket. Zweifellos werden bald weitere hinzukommen.

J.Ja




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

Tipps, nützliche Informationen und Neuigkeiten aus der Welt der Technik!
Nützliche Informationen und die neuesten technologischen Nachrichten aus der ganzen Welt. Videoüberprüfungen von Handys, Tablets und Computern.