OAuth 2.0 Autorisierung

OAuth 2.0 ist ein Autorisierungs-Framework, das zum De-facto-Standard für die Autorisierung des Zugriffs auf geschützte Ressourcen geworden ist. Es ermöglicht Drittanbieteranwendungen den Zugriff auf Benutzerdaten, ohne die Zugangsdaten des Benutzers preiszugeben. Anstatt Passwörter zu teilen, stellen Dienste Tokens bereit.

Hintergrund

Stellen Sie sich vor, Sie möchten eine Drittanbieteranwendung verwenden, die auf Daten aus Ihrem Google-Konto zugreifen muss. Sie würden dieser Drittanbieter-App nicht Ihren Google-Benutzernamen und Ihr Passwort geben wollen, oder? Hier kommt OAuth ins Spiel. Es ermöglicht Ihnen, dieser Anwendung Zugriff auf Ihre Google-Daten zu gewähren, ohne Ihre Google-Zugangsdaten zu teilen.

OAuth 2.0 mit LoadFocus

Grundlagen von OAuth 2.0

OAuth 2.0 konzentriert sich auf die Einfachheit für Client-Entwickler und bietet gleichzeitig spezifische Autorisierungsflows für Webanwendungen, Desktop-Anwendungen, Mobiltelefone und Wohnzimmergeräte. Hier ist eine vereinfachte Aufschlüsselung:

  • Resource Owner: Der Benutzer, der eine Anwendung autorisiert, auf sein Konto zuzugreifen. Der Zugriff der Anwendung auf das Benutzerkonto ist auf den "Scope" der erteilten Autorisierung beschränkt (z.B. Lesen oder Schreiben eines bestimmten Datentyps).

  • Client: Die Anwendung, die auf das Benutzerkonto zugreifen möchte. Bevor sie dies tun darf, muss sie vom Benutzer autorisiert werden, und die Autorisierung muss von der API validiert werden.

  • Resource Server: Der Server, der die Benutzerkonten hostet. Er kann Anfragen für geschützte Ressourcen unter Verwendung von Access Tokens akzeptieren und beantworten.

  • Authorization Server: Dieser Server verifiziert die Identität des Benutzers und stellt dann Access Tokens an die Anwendung aus.

OAuth 2.0 Flows

Es gibt verschiedene "Flows" oder "Grant Types" für unterschiedliche Arten von Anwendungen und Anwendungsfälle:

  • Authorization Code (für Apps, die auf einem Webserver laufen): Dies ist der am häufigsten verwendete Flow, insbesondere für Web-Apps. Er beinhaltet die Weiterleitung des Benutzers zum Dienst, wo er sich anmeldet. Nach der Anmeldung wird er mit einem Authorization Code zurück zur Anwendung geleitet, den die Anwendung gegen ein Access Token eintauschen kann.

  • Implicit (für Apps, die im Browser laufen): Dieser Flow ist für User-Agent-basierte Apps (z.B. Single-Page-Apps), bei denen das Access Token sofort zurückgegeben wird, ohne einen zusätzlichen Authorization Code-Austauschschritt.

  • Resource Owner Password Credentials: Dieser Flow ermöglicht es der Anwendung, den Benutzernamen und das Passwort des Benutzers direkt zu übermitteln. Er wird nur für vertrauenswürdige Anwendungen empfohlen, da er die Weitergabe der Benutzer-Zugangsdaten beinhaltet.

  • Client Credentials: Wird verwendet, wenn der Client selbst der Resource Owner ist; zum Beispiel, wenn der Client ein Hintergrunddienst ist.

Tokens

Anstatt die Zugangsdaten des Benutzers zu verwenden, nutzt OAuth 2.0 Tokens. Es gibt zwei Typen:

  • Access Token: Ermöglicht der Anwendung, API-Anfragen im Namen des Benutzers zu stellen. Es ist kurzlebig.

  • Refresh Token: Kann verwendet werden, um ein neues Access Token zu erhalten, wenn das ursprüngliche Access Token abgelaufen ist. Es hat eine längere Lebensdauer als ein Access Token.

Sicherheit

OAuth 2.0 setzt auf SSL/TLS für die Sicherheit. Es gewährleistet die Vertraulichkeit der Daten zwischen Client, Autorisierungsserver und Ressourcenserver. Selbst wenn es Angreifern gelingt, ein Access Token abzufangen, können sie es nicht über dessen Ablauf (typischerweise eine kurze Dauer) hinaus oder außerhalb des Scopes verwenden, für den es ausgestellt wurde.

Fazit

OAuth 2.0 ist ein leistungsstarkes und flexibles Framework, das Drittanbieteranwendungen den Zugriff auf Benutzerdaten ermöglicht, ohne die Benutzer-Zugangsdaten preiszugeben. Es ist zu einem wesentlichen Werkzeug im modernen Web geworden und bietet Benutzern und Entwicklern ein sicheres und effizientes Mittel zur Vergabe und Verwaltung von Berechtigungen über verschiedene Dienste und Anwendungen hinweg.