Mit der Entwicklung von Webanwendungen ist die API-Authentifizierung zu einem integralen Bestandteil moderner Webanwendungen geworden. JSON Web Token (JWT) ist ein offener Standard für Authentifizierung und Autorisierung, der eine sichere und zuverlässige Möglichkeit zur Authentifizierung von Benutzern und zur Implementierung von Single Sign-On bietet. In diesem Artikel wird erläutert, wie Sie JWT für die API-Authentifizierung in PHP verwenden.
Was ist JWT?
JSON Web Token (JWT) ist ein auf dem JSON-Format basierender Standard, mit dem Informationen sicher über das Internet übertragen werden können. JWT besteht normalerweise aus drei Teilen: Header, Payload und Signatur.
JWT-Workflow
Wenn sich ein Benutzer anmeldet, weist der Server dem Benutzer ein JWT zu. Dieses JWT wird an den Client gesendet und im Cookie oder lokalen Speicher des Clients gespeichert. Wenn ein Benutzer auf eine geschützte API zugreifen möchte, sendet der Client ein JWT zurück an den Server. Der Server überprüft die Signatur des JWT und verifiziert die Daten in der Nutzlast, um sicherzustellen, dass der Benutzer über die Berechtigung zum Zugriff auf die API verfügt. Wenn das JWT die Validierung besteht, autorisiert der Server den Benutzer, auf die API zuzugreifen.
JWT-Authentifizierung mit PHP implementieren
In PHP können wir einige beliebte Open-Source-Bibliotheken verwenden, um die JWT-Authentifizierung zu implementieren. In diesem Artikel wird die JWT-Bibliothek von Firebase verwendet, die eine einfache API zum Erstellen und Überprüfen von JWTs bereitstellt. Hier ist ein einfaches Beispiel:
Composer benötigt Firebase/php-jwt
Der folgende Code erstellt ein JWT, das eine Signatur und eine benutzerdefinierte Nutzlast enthält Daten.
use FirebaseJWTJWT; // Set the payload data (custom data) $payload = [ "user_id" => 1, "username" => "john.doe", ]; // Generate JWT using secret key $jwt = JWT::encode($payload, 'secret_key');
Der folgende Code überprüft die Signatur des JWT und prüft, ob die Nutzlastdaten gültig sind.
use FirebaseJWTJWT; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Nachdem wir das JWT erstellt haben, können wir es an den Kunden senden und in einem Cookie oder lokalen Speicher speichern.
// Set JWT as a cookie setcookie('token', $jwt, time()+3600, '/');
Wir können einen ähnlichen Code wie auf der Serverseite verwenden, um das vom Client gesendete JWT zu überprüfen.
use FirebaseJWTJWT; // Get JWT from cookie or local storage $jwt = $_COOKIE['token']; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Zusammenfassung
JWT ist ein sicherer und zuverlässiger Authentifizierungsmechanismus für moderne Webanwendungen. Die JWT-Authentifizierung kann einfach mithilfe der PHP- und Firebase-JWT-Bibliothek implementiert werden. Achten Sie bei der Implementierung der API-Authentifizierung darauf, JWTs nur an einem sicheren Ort zu speichern und HTTPS für die geschützte Übertragung zu verwenden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie JWT für die API-Authentifizierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!