Zum Inhalt springen

OAuth 2.0 Autorisierung

OAuth 2.0 ist ein Autorisierungs-Framework (RFC 6749) für die Vergabe von Zugriff auf geschützte Ressourcen. Es ermöglicht Drittanbieteranwendungen den Zugriff auf Benutzerdaten, ohne die Zugangsdaten des Benutzers preiszugeben. Anstatt Passwörter zu teilen, stellen Dienste Tokens bereit.

Wenn Ihr Anbieter JWT-Zugriffstoken ausstellt, zeigt der kostenlose JWT Decoder, was ein Token enthält, etwa seine Scopes und seine Ablaufzeit.

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

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.

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 (veraltet, für Apps, die im Browser laufen): Das Access Token wird sofort zurückgegeben, ohne einen Authorization-Code-Austauschschritt. Die aktuellen Sicherheitsempfehlungen (RFC 9700) raten davon ab; verwenden Sie, wo möglich, stattdessen den Authorization-Code-Flow.

  • Resource Owner Password Credentials (veraltet): Die Anwendung sendet Benutzernamen und Passwort des Benutzers direkt an den Autorisierungsserver. Das widerspricht dem Zweck von OAuth (die App sieht das Passwort), und die aktuellen Sicherheitsempfehlungen (RFC 9700) raten bei neuen Systemen davon ab.

  • Client Credentials: Es ist kein Benutzer beteiligt. Der Client authentifiziert sich selbst, um ein Token zu erhalten, zum Beispiel ein Hintergrunddienst, der eine API aufruft.

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 hat in der Regel eine kurze Lebensdauer.

  • Refresh Token: Optional. Kann verwendet werden, um ein neues Access Token zu erhalten, wenn das Access Token abgelaufen ist, sodass sich der Benutzer nicht erneut anmelden muss.

OAuth 2.0 setzt auf TLS, um Tokens und Zugangsdaten zwischen Client, Autorisierungsserver und Ressourcenserver zu schützen. Access Tokens sind meist Bearer Tokens: Wer eines besitzt, kann es verwenden. Kurze Lebensdauern und enge Scopes begrenzen den Schaden, wenn eines abfließt, halten Sie Tokens also aus Logs und URLs heraus.

Um eine mit OAuth 2.0 geschützte API per Lasttest zu prüfen, öffnen Sie im Formular für neue Tests Weitere Optionen, klicken Sie auf Autorisierung (gilt für jede Anfrage), setzen Sie Autorisierungstyp auf OAuth 2.0 und wählen Sie den Grant Type, den Ihre API verwendet: Authorization Code, Implicit, Password Credentials, Client Credentials oder Refresh Token. Wenn Sie nicht sicher sind, welcher das ist, lesen Sie Was ist ein Grant Type?. Jeder Grant Type hat eine eigene Anleitung, zum Beispiel Client Credentials und Authorization Code.