Authorization Code Grant Type in OAuth 2.0
Der Authorization Code Grant Type ist einer der am haeufigsten verwendeten OAuth 2.0 Grant-Typen. Er ist speziell fuer Anwendungen konzipiert, die ihr Client-Secret vertraulich verwalten koennen, was ihn ideal fuer serverseitige Anwendungen macht.
Wie funktioniert der Authorization Code?
- Umleitung:
- Die Client-Anwendung leitet den Benutzer zum Autorisierungsendpunkt des OAuth 2.0-Autorisierungsservers weiter. Diese Umleitung enthaelt typischerweise Query-Parameter wie die
client_id,response_type(auf "code" gesetzt),redirect_uri(wohin der Autorisierungsserver den Benutzer nach der Genehmigung/Ablehnung sendet) undscope(der die Zugriffsebene angibt, die die Anwendung anfordert).
- Benutzerauthentifizierung:
- Der Benutzer meldet sich beim Autorisierungsserver an (falls noch nicht angemeldet) und prueft die Zugriffsanfrage der Client-Anwendung.
- Ausgabe des Authorization Codes:
- Wenn der Benutzer die Genehmigung erteilt, wird er ueber die zuvor angegebene
redirect_urizur Client-Anwendung zurueckgeleitet. Die Umleitung enthaelt auch einen Authorization Code in der URL.
- Token-Austausch:
- Die Client-Anwendung tauscht den Authorization Code gegen ein Access Token aus, indem sie eine POST-Anfrage an den Token-Endpunkt des Autorisierungsservers sendet. Diese Anfrage enthaelt den Authorization Code,
client_id,client_secret,redirect_uriundgrant_type(auf "authorization_code" gesetzt).
- Ausgabe des Access Tokens:
- Wenn der Autorisierungsserver den bereitgestellten Code und die Client-Anmeldedaten erfolgreich verifiziert, gibt er ein Access Token (und optional ein Refresh Token) an die Client-Anwendung zurueck.
- Zugriff auf geschuetzte Ressource:
- Die Client-Anwendung verwendet das erhaltene Access Token, um Anfragen an den Ressourcenserver (API) im Namen des Benutzers zu stellen.
Wie konfiguriert man den Authorization Code?
- Anwendung registrieren:
- Registrieren Sie vor dem Start des OAuth-Flows Ihre Anwendung beim OAuth 2.0-Anbieter. Nach erfolgreicher Registrierung erhalten Sie eine
client_idund einclient_secret.
- Redirect URI einrichten:
- Bei der Registrierung Ihrer Anwendung werden Sie oft aufgefordert, eine
redirect_urianzugeben. Diese URI ist der Ort, an den der Autorisierungsserver die Benutzer nach der Genehmigung/Ablehnung des Zugriffs sendet. Stellen Sie sicher, dass diese URI korrekt und sicher ist (typischerweise mit HTTPS).
- OAuth-Flow implementieren:
- Verwenden Sie eine Bibliothek oder ein SDK, das mit der Sprache und dem Framework Ihrer Anwendung kompatibel ist, um diesen Prozess zu vereinfachen.
- Beginnen Sie den Flow, indem Sie Benutzer zum Autorisierungsendpunkt des Autorisierungsservers mit den notwendigen Query-Parametern weiterleiten.
- Implementieren Sie einen Endpunkt auf Ihrem Server, der der registrierten
redirect_urientspricht. Dieser Endpunkt verarbeitet den eingehenden Authorization Code. - Tauschen Sie den Authorization Code gegen ein Access Token aus, indem Sie eine POST-Anfrage an den Token-Endpunkt senden.
- Client Secret sichern:
- Legen Sie Ihr
client_secretniemals in clientseitigem Code offen. Verwenden Sie es nur serverseitig beim Austausch des Authorization Codes gegen ein Access Token.
- Token-Speicherung:
- Sobald Sie ein Access Token haben, speichern Sie es sicher. Je nach den Anforderungen Ihrer Anwendung kann dies im Serverspeicher, einer Datenbank oder einem sicheren Cookie sein. Verwenden Sie immer HTTPS, um eine verschluesselte Kommunikation sicherzustellen.
- Token-Ablauf behandeln:
- Access Tokens sind oft kurzlebig. Wenn Sie ein Refresh Token haben, verwenden Sie es, um ein neues Access Token zu erhalten, ohne dass sich der Benutzer erneut authentifizieren muss.
Abschliessende Gedanken zum Authorization Code
Der Authorization Code Grant Type ist eine robuste und sichere Methode zur Erlangung der Benutzerautorisierung, insbesondere fuer serverseitige Anwendungen. Der zusaetzliche Schritt des Austauschs eines Authorization Codes gegen ein Access Token stellt sicher, dass ein direkter Zugriff auf Benutzeranmeldedaten vermieden wird. Priorisieren Sie bei der Implementierung immer die Sicherheit, indem Sie HTTPS verwenden und Client-Secrets und Tokens sicher verwalten.