Implicit Grant Type in OAuth 2.0

Der Implicit Grant Type, auch als "Token"-Methode bekannt, wurde hauptsaechlich fuer clientseitige Anwendungen entwickelt, bei denen der Client ein Client-Secret nicht sicher speichern kann. Solche Anwendungen umfassen Single-Page-Apps (SPAs) oder andere browserbasierte Anwendungen. Anstatt einen Authorization Code zu erhalten, der gegen ein Access Token eingetauscht werden muss, erhaelt die Anwendung das Access Token direkt.

Implicit Grant Type in LoadFocus

Wie funktioniert der Implicit Grant Type?

  1. Umleitung:
  • Die Client-Anwendung leitet den Benutzer zum Autorisierungsendpunkt des OAuth 2.0-Autorisierungsservers weiter. Diese Umleitung enthaelt typischerweise Query-Parameter wie client_id, response_type (beim Implicit Grant auf "token" gesetzt), redirect_uri (wohin der Autorisierungsserver nach Gewaehrung/Verweigerung des Zugriffs weiterleitet) und scope (der die angeforderte Zugriffsebene angibt).
  1. Benutzerauthentifizierung:
  • Der Benutzer meldet sich beim Autorisierungsserver an (falls noch nicht angemeldet) und prueft die Zugriffsanfrage der Client-Anwendung.
  1. Access-Token-Ausgabe:
  • Wenn der Benutzer den Zugriff gewaehrt, leitet der Autorisierungsserver ihn ueber die angegebene redirect_uri zur Client-Anwendung zurueck. Die Weiterleitungs-URI enthaelt das Access Token (und dessen Ablaufzeit) direkt im Fragment-Teil der URL.
  1. Zugriff auf geschuetzte Ressource:
  • Die Client-Anwendung extrahiert das Access Token aus dem URL-Fragment und speichert es (z. B. im Local Storage oder einer Sitzung). Anschliessend verwendet sie dieses Token, um im Namen des Benutzers Anfragen an den Ressourcenserver (API) zu stellen.

Wie konfiguriert man den Implicit Grant Type?

  1. Anwendung registrieren:
  • Beginnen Sie, indem Sie Ihre Anwendung beim OAuth 2.0-Anbieter registrieren. Nach erfolgreicher Registrierung erhalten Sie typischerweise eine client_id.
  1. Redirect-URI einrichten:
  • Geben Sie bei der Registrierung eine redirect_uri an. Der Autorisierungsserver leitet die Benutzer nach der Entscheidung ueber Gewaehrung oder Verweigerung des Zugriffs an diese URI weiter. Stellen Sie sicher, dass diese URI sicher ist (typischerweise mit HTTPS) und die Token-Extraktion aus dem URL-Fragment verarbeiten kann.
  1. OAuth-Flow initiieren:
  • Leiten Sie Benutzer mit den notwendigen Parametern zum Autorisierungsendpunkt des Autorisierungsservers weiter. Verwenden Sie Bibliotheken oder SDKs, die fuer die Sprache oder das Framework Ihrer Anwendung geeignet sind, um dies zu erleichtern.
  1. Token extrahieren und speichern:
  • Nach der Weiterleitung extrahieren Sie das Access Token aus dem URL-Fragment. Speichern Sie das Token sicher unter Beruecksichtigung clientseitiger Speicheroptionen wie Web Storage (localStorage oder sessionStorage) oder Cookies. Stellen Sie sicher, dass es vor Cross-Site-Scripting (XSS)-Angriffen geschuetzt ist.
  1. Token verwenden:
  • Fuegen Sie das Access Token an API-Anfragen an, die an den Ressourcenserver gestellt werden.
  1. Token-Ablauf behandeln:
  • Da der Implicit Grant normalerweise keine Refresh Tokens bereitstellt, muessen Sie bei Ablauf eines Access Tokens moeglicherweise den OAuth-Flow erneut initiieren, um ein neues zu erhalten.

Ueberlegungen:

  • Sicherheit: Der Implicit Grant Type gilt als weniger sicher als der Authorization Code Grant Type, insbesondere weil das Access Token in der URL offengelegt wird. Dies koennte in Umgebungen, in denen URLs protokolliert oder von Dritten eingesehen werden koennen, ein Risiko darstellen.

  • Kein Refresh Token: Typischerweise stellt der Implicit Grant keine Refresh Tokens bereit. Wenn ein Access Token ablaeuft, muss daher moeglicherweise der gesamte Flow wiederholt werden.

  • Abkuendigung: Aufgrund der inherenten Sicherheitsbedenken empfiehlt das Dokument "OAuth 2.0 Security Best Current Practice", den Implicit Grant zugunsten des Authorization Code mit PKCE (Proof Key for Code Exchange) fuer oeffentliche Clients wie SPAs zu vermeiden.

Fazit:

Waehrend der Implicit Grant Type einen einfacheren Flow fuer clientseitige Anwendungen bietet, haben seine Sicherheitsbedenken zu Empfehlungen gegen seine Verwendung in modernen Anwendungen gefuehrt. Wenn Sie neue Anwendungen erstellen, insbesondere SPAs, erwaegen Sie die Verwendung des Authorization Code Grant mit PKCE fuer einen sichereren Ansatz.