OAuth 2.0 und JWT-Autorisierung in PHP: Vollständiger Leitfaden für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum sind OAuth 2.0 und JWT in modernen Webanwendungen notwendig?



In der modernen Webentwicklung ist die sichere Datenübertragung zwischen Client und Server eine der zentralen Aufgaben. Traditionelle Authentifizierungsmethoden wie Cookie-basierte Sitzungen funktionieren gut für monolithische Anwendungen, werden jedoch bei der Erstellung von REST APIs, mobilen Anwendungen oder einer Microservice-Architektur unpraktisch. Genau hier kommen zwei leistungsstarke Werkzeuge zum Einsatz: das Protokoll OAuth 2.0 und das Token-Format JWT (JSON Web Token).



In diesem Artikel werden wir die grundlegenden Konzepte von OAuth 2.0 und JWT erläutern und dann Schritt für Schritt ein einfaches Autorisierungssystem in PHP erstellen. Der Artikel richtet sich an Anfänger-Entwickler, daher werden alle Erklärungen so einfach wie möglich gehalten und von praktischen Codebeispielen begleitet.



Was ist OAuth 2.0 und wie funktioniert es?



OAuth 2.0 ist ein Autorisierungsprotokoll, das es Anwendungen ermöglicht, eingeschränkten Zugriff auf die Ressourcen eines Benutzers zu erhalten, ohne dessen Benutzernamen und Passwort weiterzugeben. Stellen Sie sich vor, Sie möchten sich auf einer Website über Ihr Google- oder Facebook-Konto anmelden – genau das ist die Funktionsweise von OAuth 2.0.



Hauptrollen in OAuth 2.0

  • Resource Owner (Ressourceninhaber) – der Benutzer, der die Daten besitzt.
  • Client (Client) – die Anwendung, die auf die Daten des Benutzers zugreifen möchte.
  • Authorization Server (Autorisierungsserver) – der Server, der nach erfolgreicher Authentifizierung Token ausstellt.
  • Resource Server (Ressourcenserver) – der Server, der geschützte Daten speichert und Token überprüft.


Autorisierungsablauf (Authorization Code Grant)

Der häufigste und sicherste OAuth 2.0-Ablauf sieht wie folgt aus:

  1. Der Client leitet den Benutzer zum Autorisierungsserver weiter.
  2. Der Benutzer meldet sich an und erteilt die Berechtigung.
  3. Der Autorisierungsserver gibt einen Authorization Code an den Client zurück.
  4. Der Client tauscht den Code gegen ein Access Token (Zugriffstoken) ein.
  5. Mit dem Access Token greift der Client auf den Ressourcenserver zu.


Was ist JWT und warum ist es so beliebt?



JWT (JSON Web Token) ist ein kompaktes und eigenständiges Token-Format, das zur Übertragung von Informationen zwischen Parteien in Form eines JSON-Objekts verwendet wird. Die Informationen in einem JWT können überprüft und als vertrauenswürdig eingestuft werden, da das Token mit einer digitalen Signatur versehen ist.



Struktur von JWT

Ein JWT besteht aus drei Teilen, die durch Punkte getrennt sind:

header.payload.signature
  • Header (Kopfzeile) – enthält den Tokentyp (JWT) und den Signaturalgorithmus (z. B. HS256 oder RS256).
  • Payload (Nutzlast) – enthält die Daten (Claims), wie Benutzer-ID, Rolle, Erstellungszeitpunkt und Ablaufzeit des Tokens.
  • Signature (Signatur) – wird durch Verschlüsselung von Header und Nutzlast mit einem geheimen Schlüssel erstellt.


Vorteile von JWT

  • Eigenständigkeit – alle notwendigen Informationen sind im Token gespeichert, was die Datenbanklast reduziert.
  • Sicherheit – das Token ist signiert, sodass es nicht gefälscht werden kann.
  • Vielseitigkeit – funktioniert mit jeder Programmiersprache und Plattform.
  • Skalierbarkeit – ideal für Microservices und verteilte Systeme.


Praktische Umsetzung: Erstellen eines Autorisierungssystems in PHP



Kommen wir nun zum spannendsten Teil – dem Schreiben von Code. Wir erstellen ein einfaches PHP-Skript, das ein JWT-Token generiert und bei jeder Anfrage überprüft. Für die Arbeit mit JWT verwenden wir die Bibliothek firebase/php-jwt.



Blogs

Buchempfehlungen