Was ist ein Grant Type?
OAuth 2.0 Autorisierungskontext
Im Rahmen der OAuth 2.0 Autorisierung bezieht sich der Begriff "Grant Type" auf die Methode, durch die eine Anwendung ein Access Token erhält. Im Wesentlichen legt der Grant Type fest, welche Art von Autorisierungsflow die Anwendung verwendet, um auf Benutzerdaten zuzugreifen.
Verschiedene Grant Types in OAuth 2.0
OAuth 2.0 definiert mehrere Grant Types, die für unterschiedliche Anwendungsszenarien zugeschnitten sind:
- Authorization Code:
- Am besten geeignet für: Anwendungen, die das Client Secret sicher aufbewahren können, oft serverseitige Anwendungen.
- Flow: Der Benutzer wird zunächst zu einem Authentifizierungsserver weitergeleitet. Nach erfolgreicher Authentifizierung wird er mit einem Authorization Code zurück zur Anwendung geleitet. Die Anwendung tauscht diesen Code gegen ein Access Token ein.
- Implicit:
- Am besten geeignet für: User-Agent-zentrische Anwendungen, wie Single-Page-Apps.
- Flow: Spiegelt den Authorization Code-Flow wider, aber das Access Token wird direkt ohne einen Zwischencode geliefert. Er gilt als weniger sicher als die Authorization Code-Methode.
- Password (Resource Owner Password Credentials):
- Am besten geeignet für: Anwendungen mit hohem Vertrauen, die oft derselben Organisation wie der Ressourcenserver gehören.
- Flow: Benutzer geben ihren Benutzernamen und ihr Passwort direkt in die Anwendung ein. Die Anwendung verwendet diese Zugangsdaten dann, um ein Access Token abzurufen. Dieser Flow wird generell nicht empfohlen, es sei denn, der Client ist sehr vertrauenswürdig.
- Client Credentials:
- Am besten geeignet für: Dienste oder Anwendungen, die auf ihre eigenen Ressourcen zugreifen müssen, nicht auf die eines Benutzers.
- Flow: Die Anwendung authentifiziert sich mit ihren eigenen Zugangsdaten (wie Client-ID und Secret) und erhält dafür ein Access Token.
- Device Code (für Geräte ohne umfassende Browser-Fähigkeiten):
- Am besten geeignet für: Geräte wie Smart-TVs, Spielkonsolen oder Drucker.
- Flow: Das Gerät kommuniziert mit dem Autorisierungsserver, um einen Gerätecode und einen Benutzercode zu erhalten. Der Benutzer gibt den Benutzercode auf einem anderen Gerät ein (z.B. einem Smartphone). Nach der Verifizierung erhält das Gerät ein Access Token.
- Refresh Token:
- Verwendung: Es ist kein eigenständiger Flow, sondern ergänzt andere Grant Types. Wenn das Access Token abläuft, ermöglicht ein Refresh Token der Anwendung, ein neues zu erhalten, ohne dass sich der Benutzer erneut anmelden muss.
Warum sind Grant Types wichtig?
Grant Types bieten Flexibilität für verschiedene Anwendungskontexte. Jeder einzelne stellt sicher, dass die Beschaffung von Access Tokens so sicher wie möglich ist, unter Berücksichtigung der Einschränkungen der Anwendung. Die Wahl des Grant Types beeinflusst die Interaktionen zwischen Client, Benutzer und Autorisierungsserver, wodurch die richtige Auswahl sowohl für die Benutzerfreundlichkeit als auch für die Sicherheit entscheidend ist.